Я всегда полностью убегаю этих ComboBoxes. Я думаю, что понимаю их, но, похоже, я этого не делаю.ComboBox TwoWay binding не работает
Я не могу дать объекту родителя. Таким образом, у меня есть этот дочерний объект, у него есть значение, которое является идентификатором родителя, и у меня есть коллекция родительских элементов.
Я выбираю родителя из ComboBox, и если я правильно понимаю, что свойство ID должно быть привязано к свойству ParentId Child. Кажется хорошо, когда я выбираю его, свойство переходит. Шаблон изменен, и он отображается как текстовый блок, все в порядке. когда шаблон возвращается в тип ComboBox внезапно, это Null. Должен ли он найти сопоставимый элемент в коллекции, где его идентификатор соответствует ParentId?
Вот код:
РОДИТЕЛЕЙ
public class Parent
{
private string _id;
public string Id
{
get
{
return _id;
}
set
{
_id = value;
OnPropertyChanged("Id");
}
}
private string _name;
public string Name
{
get
{
return _name;
}
set
{
_name = value;
OnPropertyChanged("Name");
}
}
}
РЕБЕНОК
public class RulesMainClassViewModel : ViewModelBase
{
private string _id;
public string Id
{
get
{
return _id;
}
set
{
_id = value;
OnPropertyChanged("Id");
}
}
private string _parentId;
public string ParentId
{
get
{
return _parentId;
}
set
{
_parentId = value;
OnPropertyChanged("ParentId");
}
}
private string _name;
public string Name
{
get
{
return _name;
}
set
{
_name = value;
OnPropertyChanged("Name");
}
}
}
XAML выпадающий
<ComboBox DisplayMemberPath="Name" SelectedValue="{Binding Path=ParentId, Mode=TwoWay}"
SelectedValuePath="Id" ItemsSource="{Binding Path=ParentCollection}" />
Это ошибка в WPF его называют каскадом проблемы выпадающей, если вы заметили, тщательно , когда переменные itemssource, к сожалению, combobox устанавливает SelectedIndex на -1, что приводит к тому, что SelectedValue очищает и освобождает привязку. –
@Akash Это так? Это то, что было исправлено в .Net 4. И я не верю, что ItemsSource изменился в моем примере. –
Его еще не исправлено в .NET 4. ComboBox имеет проблемы с привязками при изменении ItemsSource, ItemsSource привязан к коллекции, и если какой-либо элемент добавлен или удален, ComboBox пытается обновить SelectedValue, однако, если есть небольшой шанс, что он будет не найти выбранное значение, он установит SelectedIndex равным -1, и он потеряет привязку. –