В моем приложении WP8 у меня есть класс, который имеет свойство ObservableCollection<ObservableCollection<int>>
под названием Matrix.Xaml двусторонняя привязка текстового поля к наблюдаемой коллекции
Я хочу отобразить эти матрицы с помощью элемента управления.
<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>
Этот код работает в отношении отображения (он заполняется нулями, которое является значением по умолчанию). Но я также хочу разрешить изменения в TextBoxes, которые будут отражены в свойстве Matrix - теперь TextBoxes не могут быть изменены, потому что их значение связано одним способом с ячейками Matrix, я думаю. Я попытался установить <TextBox Text="{Binding Mode=TwoWay}" />
или аналогично, но он, похоже, не работает. Любые идеи о том, как должны привязываться данные?
EDIT: Я внедрил 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 к TwoWay или что-то еще, но не знаю, как это сделать. Есть идеи ?
«общественное ObservableCollection> матрица» .. его свойство, но это не примитивный тип данных, как строка или целое число сво коллекцию. –