我有一点问题,我不知道如何解决它。我有一个名为Points的类,它有一个可观察的System.Windows Point集合。 它看起来像这样:
public class Points
{
public Points()
{
MyPoints = new ObservableCollection<Point>();
InitWithValues();
}
public ObservableCollection<Point> MyPoints { get; set; }
private void InitWithValues()
{
MyPoints.Add(new Point(1, 2));
MyPoints.Add(new Point(3, 4));
}
}
现在我想把这个集合放在一个带有文本框的列表框中的usercontrol上。 这是xaml:
<Grid Background="Gainsboro">
<ListBox Name="Box">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Background="Gainsboro">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBox
Text="{Binding x}"
Grid.Column="0"
MinWidth="30" />
<TextBox Grid.Column="1"
Text="{Binding y, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
MinWidth="30"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
背后的代码:
public partial class MainWindow
{
public Points points { get; set; }
public ObservableCollection<Point> DataPoints { get; set; }
public MainWindow()
{
InitializeComponent();
points = new Points();
DataPoints=new ObservableCollection<Point>();
foreach (Point point in points.MyPoints)
{
DataPoints.Add(point);
}
Box.ItemsSource = DataPoints;
DataContext = this;
}
}
当我运行这段代码时,我得到一个有两行的窗口 - 每行一个,每行有两个文本框 - 用于x和y。但文本框是空的,我不知道我做错了什么(每个文本框应该包含x - 左侧文本框和y - 右侧文本框的一个点)..... here is a print screen with the result < / p>
有人可以给我一个建议吗? 谢谢!
答案 0 :(得分:1)
属性名称 区分大小写 。您绑定到 x
而不是 X
,y
和Y
也是如此。
将绑定中的属性名称更改为:
Text="{Binding X}"
和
Text="{Binding Y}"