2016-11-02 11 views
0

のPathFigure C#WPFのために動的にイベントハンドラ(MouseDownイベント)を追加し、私は、動的に、このコードのポイントからオブジェクトを作成しました:

SolidColorBrush brushColor = (SolidColorBrush)new BrushConverter().ConvertFromString(_brushColor); 

PathFigure figures = new PathFigure(); 
figures.StartPoint = points[0]; 
points.RemoveAt(0); 
figures.Segments = new PathSegmentCollection(points.Select((p, i) => new LineSegment(p, i % 2 == 0))); 
PathGeometry pg = new PathGeometry(); 
pg.Figures.Add(figures); 
canvas.Children.Add(new Path { Stroke = brushColor, StrokeThickness = 3, Data = pg }); 

を今、私は、このオブジェクトのイベントハンドラを追加します。オブジェクトがパスまたはポリライン型の場合は問題ありません。私はちょうどこのようにイベントハンドラを追加します。

poly.MouseDown += new MouseButtonEventHandler(poly_MouseDown); 

void poly_MouseDown(object sender, MouseButtonEventArgs e) 
{ 
    //code 
} 

問題は、私はMouseDownイベント・ハンドラを受け入れていない図とPathGeometryをを使用しなければならないことです。彼らはSystem.Windowsからのものです。 メディアクラスとパス/ポリラインはSystem.Windowsからのものです。 図形 Figureオブジェクトに正しいイベントハンドラ(MouseDown)を割り当てる解決策が見つかりません。

この問題の解決方法はありますか?何とかキャストや変換を行うことがありますか?

+0

チェックこの記事:http://stackoverflow.com/questions/40302791/polylines-extended-on-canvas- over-draw-of-point-of-pointコレクション-c-sha/40303995#40303995 – dodoria1992

答えて

0

私はそれを見ると、重要なステップをスキップしています。 は、最初Pathオブジェクトを宣言し、それにイベントを与え、その後、あなたのCanvasにそれを挿入します。

SolidColorBrush brushColor = (SolidColorBrush)new BrushConverter().ConvertFromString (_brushColor); 

PathFigure figures = new PathFigure(); 
figures.StartPoint = points[0]; 
points.RemoveAt (0); 
figures.Segments = new PathSegmentCollection (points.Select ((p, i) => new LineSegment (p, i % 2 == 0))); 
PathGeometry pg = new PathGeometry(); 
pg.Figures.Add (figures); 
Path pgObject = new Path({ Stroke = brushColor, StrokeThickness = 3, Data = pg }); 
pgObject.MouseDown+=new MouseButtonEventHandler(poly_MouseDown); 
canvas.Children.Add (pgObject); 
+0

ああ...ありがとう、今私は見る... – dodoria1992