WPF双向组合框绑定未更新
我创建了一个非常简单的ViewModel,其中包含以下集合WPF双向组合框绑定未更新,wpf,binding,Wpf,Binding,我创建了一个非常简单的ViewModel,其中包含以下集合 public ObservableCollection<Reader> Readers { get { if(_readers == null) { _readers = new ObservableCollection<Reader>(); }
public ObservableCollection<Reader> Readers
{
get
{
if(_readers == null)
{
_readers = new ObservableCollection<Reader>();
}
return _readers;
}
set
{
_readers = value;
}
}
我已将DataContext设置为包含Readers集合的类,并尝试将组合框列表框绑定到项,如下所示:
<ListBox Name="_lbLanes"
BorderThickness="0"
Height="200"
ScrollViewer.HorizontalScrollBarVisibility="Hidden"
ItemsSource="{Binding Readers}" >
<ListBox.ItemTemplate>
<DataTemplate>
<ComboBox Name="_cbReaders"
Margin="0,0,0,10"
ItemsSource="{Binding Source={x:Static models:Readers.Instance}, Path=AllReaders}"
DisplayMemberPath="Name"
SelectedItem="{Binding Path=., Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
MinWidth="400">
</ComboBox>
</DataTemplate>
</ListBox.ItemTemplate>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Vertical"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
您可以看到,我正在绑定到自身,并已将模式设置为双向
此外,我还尝试将SelectedValue和SelectedItem绑定,两者都会产生以下问题
当我单击save提交页面时,我会检查该项的Readers集合的内容,所有内容都设置为其初始值,该值等于
Readers.Instance.AllReaders[0]
我想如果我不想双向绑定,但我想,这是正确的,这是可能的,还是我必须去手动获取所有组合框中选定的项目
提前感谢您抽出时间回复
丹我认为你不能像这样两面都绑 也许这就是你想要的 仅仅因为双向绑定需要Path或XPath。这并不意味着您应该将其设置为相同的值。您应该为ListBox创建特定的对象,该对象将包含Reader作为属性
<ListBox Name="_lbLanes"
BorderThickness="0"
Height="200"
ScrollViewer.HorizontalScrollBarVisibility="Hidden"
ItemsSource="{Binding Readers}" >
<ListBox.ItemTemplate>
<DataTemplate>
<ComboBox Name="_cbReaders"
Margin="0,0,0,10"
ItemsSource="{Binding Source={x:Static models:Readers.Instance}, Path=AllReaders}"
DisplayMemberPath="Name"
SelectedItem="{Binding Path=., Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
MinWidth="400">
</ComboBox>
</DataTemplate>
</ListBox.ItemTemplate>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Vertical"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>