我有一個包含double X
一個視圖模型類和double Y
變量,我想這個綁定到BezierSegment,似乎並不在這裏工作是我的代碼...WPF綁定到點在BezierSegment
public class TestViewModel:ViewModelBase
{
public TestViewModel()
{
TStart = new TPoint {X=20.0,Y=45.0 };
TEnd = new TPoint { X = 200.0, Y = 450.0 };
}
public TPoint TStart { get; set; }
public TPoint TEnd { get; set; }
}
public class TPoint:ViewModelBase
{
private double _X;
public double X
{
get { return _X; }
set
{
if (_X != value)
{
_X = value;
RaisePropertyChanged("X");
}
}
}
private double _Y;
public double Y
{
get { return _Y; }
set
{
if (_Y != value)
{
_Y = value;
RaisePropertyChanged("Y");
}
}
}
}
}
和XAML
<Window.DataContext>
<vm:TestViewModel />
</Window.DataContext>
<Grid>
<Path Stroke="Black" StrokeThickness="3">
<Path.Data>
<PathGeometry>
<PathGeometry.Figures>
<PathFigureCollection>
<PathFigure>
<PathFigure.Segments>
<PathSegmentCollection>
<BezierSegment>
<BezierSegment.Point1>
<Point X="{Binding TStart.X}" Y="{Binding TStart.Y}" />
</BezierSegment.Point1>
<BezierSegment.Point3>
<Point X="{Binding TEnd.X}" Y="{Binding TEnd.Y}" />
</BezierSegment.Point3>
</BezierSegment>
</PathSegmentCollection>
</PathFigure.Segments>
</PathFigure>
</PathFigureCollection>
</PathGeometry.Figures>
</PathGeometry>
</Path.Data>
</Path>
</Grid>
我得到一個錯誤,只能爲DependencyObject的DependencyProperties定義X和Y的綁定... ...
我不想依賴Windows Class Point ... 雖然這不會依賴於這個例子。
有人可以告訴我如何將我自己的點座標綁定到BezierSegemnt Point1 Point2 Point3?
我有這樣的事情在我的腦海,我想知道是否有可能結合X和Y不含天然Point類......我'll試試看吧.. – silverfighter 2011-04-18 17:31:46
@silverfighter BezierSegment只接受'Point'結構。因爲這不是'DependencyObject',X和Y不是DependencyProperties,所以你不能像這樣使用它,但必須爲DependencyProperties'Point1-3'設置一個完整的'Point'。我所展示的替代方案將是一個帶MultiValueConverter的MultiBinding,它返回一個「Point」。 – 2011-04-18 17:37:17