我正在开发使用它的交互式图表库...和应用程序。
在申请中,我有ListView
Points
CurrentItem
。
public Point CurrentPoint
{
get { return myCurrentPoint; }
set
{
myCurrentPoint = value;
base.OnPropertyChanged("CurrentPoint");
}
}
在同一个面板上,我有两个用于编辑点坐标的文本框:
<TextBox Text="{Binding CurrentPoint.X, Mode=TwoWay}"
Grid.Column="1" Grid.Row="0" Width="80" Margin="5"/>
我的大问题是,Point
是一个结构......所以它是通过价值传递的。
如果我在文本框中更改X
坐标...它不会更改数据绑定Point
。
我该如何解决这个问题呢?
我是否应该编写自己的Point
课程和Line
课程,因为她Points
PointCollection
Point
?
如果需要,我可以发布更多代码:)
感谢。
答案 0 :(得分:1)
为什么不创建一个组合控件来更改Point而不是Point
的x和y组件。然后,您可以绑定到您的Point
- 属性,绑定将按预期工作。此外,你可能有一个更好的用户界面。
您可以创建UserControl
,添加两个文本框并向此控件添加DependencyProperty - Point
。每当其中一个文本框的内容发生更改时,请将Point
- 属性设置为其新值。
public class PointInputBox : UserControl{
public static readonly DependencyProperty PointProperty =
DependencyProperty.Register("Point", typeof(Point), typeof(PointInputBox), new FrameworkPropertyMetadata(new Point(0,0),FrameworkPropertyMetadataOptions.BindsTwoWayByDefault));
public Point Point {
get { return (Point)GetValue(PointProperty); }
set { SetValue(PointProperty, value); }
}
// Add here event handlers for changes of your input boxes and set
// the Point-value accordingly