Связывание с моей ItemsControl ItemsTemplate не работает. Я прошел через некоторые другие подобные проблемы переполнения стека, но я не могу понять проблему с моей привязкой. Может кто-нибудь, пожалуйста, покажите мне, что я делаю неправильно с моей привязкой?Связывание с TextBox внутри элемента ItemsControl ItemTemplate
Выдержка из ViewModel MainWindow;
private ObservableCollection<uint> words;
private uint word;
private int numberOfWords;
public ObservableCollection<uint> Words
{
get
{
return this.words;
}
set
{
this.words = value;
this.NotifyPropertyChanged(m => m.Words);
}
}
public uint Word
{
get
{
return this.word;
}
set
{
this.word = value;
this.NotifyPropertyChanged(m => m.Word);
}
}
public int NumberOfWords
{
get
{
return this.numberOfWords;
}
set
{
this.numberOfWords = value;
this.NotifyPropertyChanged(m => m.NumberOfWords);
this.Words.Clear();
for (uint x = 0; x < value; x++)
{
this.Words.Add(this.Word);
}
}
}
У меня есть элемент ItemsControl внутри пользовательского элемента управления. MainWindow имеет свой DataContext, установленный в ViewModel, который использует ItemsControl. Связывание с ItemsSource работает, и я получаю много текстовых полей, которые я указываю, но при установке значения в TextBox привязка не работает.
<ItemsControl Grid.Row="0" Grid.Column="1" Grid.RowSpan="8" ItemsSource="{Binding Words}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBox Text="{Binding Word}" Width="125" Height="25" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Я видел один пост, который говорит об использовании этого типа связывания ниже, но, видимо, я не понимаю FindAncestor, так что я не знаю, если я нахожусь на правильном пути или нет с этим.
Text="{Binding Path=Word, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ItemsControl}}}"
Свойство 'Word' выглядит как выбранный элемент. Почему вы хотите связать каждый TextBox.Text с тем же свойством? Вы имеете в виду ' '? Это привяжет 'TextBox' к каждому элементу –
dkozl
Я имею в виду установить привязку каждого TextBox к каждому элементу и не понял, что о привязке, но когда я меняю привязку TextBox и запускаю его, я получаю следующую ошибку при установке NumberOfWords свойство: Двусторонняя привязка требует Path или XPath –
смену привязки к 'Text = {{Binding Path =.} "' – dkozl