在我的WP8应用程序我有一个类,它有一个ObservableCollection<ObservableCollection<int>>
属性称为矩阵。
我想用项目控件来显示这些矩阵。
<ItemsControl ItemsSource="{Binding FirstMatrix.Matrix}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<ItemsControl ItemsSource="{Binding}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"></StackPanel>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBox Text="{Binding}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
代码工作就显示而言(它是用零填充这是一个默认值)。 但我也希望允许文本框的变化这将在矩阵属性得到体现 - 现在的文本框不能被改变,因为它们的价值势必一种方式矩阵I猜细胞。 我尝试设置<TextBox Text="{Binding Mode=TwoWay}" />
或某物类似,但它似乎不工作。 任何想法应该如何将数据绑定?
编辑:我已经实现了INotifyPropertyChanged的。 这里是我的课的一部分:
public partial class CalcMatrix : INotifyPropertyChanged
{
public ObservableCollection<ObservableCollection<int>> Matrix
{
get { return _matrix; }
set
{
_matrix = value;
OnPropertyChanged("Matrix");
}
}
private ObservableCollection<ObservableCollection<int>> _matrix;
private void OnPropertyChanged(string argName)
{
var handler = PropertyChanged;
if(handler != null)
handler(this, new PropertyChangedEventArgs(argName));
}
public event PropertyChangedEventHandler PropertyChanged;
}
我觉得TexBoxes不改变的原因是因为绑定是单向的 - 文本始终是什么矩阵内。 我相信,我应该以某种方式改变XAML结合双向或东西,但不知道怎么办。 有任何想法吗 ?