2014-03-19 2 views
0

캔버스에 그려진 도형에 속성을 연결할 때 매우 유용하게 사용되는 도형 객체의 Tag 속성이 있음을 알고 있습니다. 반면에 우리는 가벼운 드로잉 객체를 사용하는 것이 좋습니다 : LineGeometrywpf의 LineGeometry 객체에 고유 한 속성 첨부

어떻게이 클래스의 인스턴스에 고유 한 속성을 붙일 수 있습니까?

참고 : 캔버스에 1000 개 이상의 선을 추가하고 싶습니다. 어느 것이 어떤 것인지를 인식 할 수 있기를 원합니다. 이 선들은 철근과 같은 구조 요소의 다양한 부분을 나타낼 것이기 때문입니다. 그래서 저는 선을 클릭하고 그것이 나타내는 철근을 인식 할 수 있기를 원합니다.

+1

당신 * * 만들 수 있습니다 [첨부 속성] (http://msdn.microsoft.com : 귀하의 ExtendedLineGeometry 목적은 그래서 당신이 할 필요가 Children 컬렉션에 전달하는 것입니다, 그 안에 LineGeometry 개체가 /en-us/library/ms749011(v=vs.110).aspx) 그러나, 당신이 잘못된 접근법을 가지고 시작했을 가능성이 큽니다. 처리하려는 데이터의 특성 또는 * 연결할 * 데이터에 따라 UI가 해당 데이터에 적합한 위치가 아닐 수도 있습니다. 더 나은 답변을 얻으려면이 UI 요소에 추가하려는 속성에 대한 몇 가지 추가 정보를 게시하십시오. –

+0

@HighCore 나는 잘못된 길을 가고 있다고 생각합니다. 나는 몇 가지 메모를 추가했다. 나는 올바른 방향으로 나를 인도 해주는 도움을 정말 고맙게 생각한다. – Vahid

+0

@HighCore 3 주 후, 이제 나는 당신이 의미하는 것을 안다! 나는 돌아와서 나의 오래된 글을 읽는 버릇이있다! 나는 많은 것을 배운다! 감사합니다 :) – Vahid

답변

1

LineGeometrysealed으로 선언되었으므로 직접 확장 할 수 없습니다. 그러나,의 유형 LineGeometry의 재산 및 새로운 특성을 가진 새로운 클래스를 선언에서 당신을 중지 아무것도 없다 : 다음

public class ExtendedLineGeometry 
{ 
    public object CustomProperty { get; set; } 
    public LineGeometry LineGeometry { get; set; } 
} 

, 당신은 LineGeometry 개체에 액세스하여 원하는 목적지는, 당신은 단지 그것을 참조 할 필요가있다 같은 :

Path myPath = new Path(); 
myPath.Stroke = extendedLineGeometry.CustomProperty; 
myPath.StrokeThickness = extendedLineGeometry.CustomProperty2; 
myPath.Data = extendedLineGeometry.LineGeometry; 
:

Path myPath = new Path(); 
myPath.Stroke = Brushes.Black; 
myPath.StrokeThickness = 1; 
myPath.Data = extendedLineGeometry.LineGeometry; 

당신이 당신의 추가 속성에 넣을 내용에 따라, 당신은 어쩌면 또 다른 하나를 추가하고이 같은 일을 수행합니다 double로 정의 할 수


UPDATE >>>

는 난 그냥 당신이 그것을 사용하는 것이 방법을 설명했다 생각했다. 그러나 귀하의 의견은 귀하가 이해하지 못했다고 믿게합니다. GeometryGroup.Children 속성은 LineGeometry 개체를 사용할 수 있습니다.

geometryGroup.Children.Add(extendedLineGeometry.LineGeometry); 
+0

사실 나는 이것을 시도했지만 어떻게 GeometryGroup 클래스에 추가 할 수 있습니다. 이 확장 클래스를 허용하지 않습니다. – Vahid