Wpf 如何在ListBox.ItemsSource的两个数据源之间切换
将ItemsControl.ItemsSource绑定到给定属性的不同源的最佳方式是什么 绑定应仅对2个集合中的一个进行,ItemsControl绑定到的集合的选择应基于某些属性 我有一个绑定到ViewModel的视图。 我要绑定到的集合位于该ViewModel下的不同层次路径中 我有一个基于多重绑定的解决方案,但我认为应该有更优雅的解决方案Wpf 如何在ListBox.ItemsSource的两个数据源之间切换,wpf,binding,itemscontrol,multibinding,Wpf,Binding,Itemscontrol,Multibinding,将ItemsControl.ItemsSource绑定到给定属性的不同源的最佳方式是什么 绑定应仅对2个集合中的一个进行,ItemsControl绑定到的集合的选择应基于某些属性 我有一个绑定到ViewModel的视图。 我要绑定到的集合位于该ViewModel下的不同层次路径中 我有一个基于多重绑定的解决方案,但我认为应该有更优雅的解决方案 <CollectionViewSource x:Key="CVS"> <CollectionViewSource.Sourc
<CollectionViewSource x:Key="CVS">
<CollectionViewSource.Source >
<MultiBinding Converter="{StaticResource myMultiBindingConverter}">
<Binding Path="XXXX.YYYY.ObservableCollection1" />
<Binding Path="XXXX.ObservableCollection2" />
</MultiBinding>
</CollectionViewSource.Source>
</CollectionViewSource>
<ListBox x:Name="myListBox"
ItemsSource="{Binding Source={StaticResource CVS}}" />
DataTrigger
在这里可能更合适,因为您希望基于另一个值更改ItemsSource
绑定
<Style x:Key="MyListBoxStyle" TargetType="ListBox">
<Setter Property="ItemsSource" Value="{Binding XXX.ObservableCollection2}" />
<Style.Triggers>
<DataTrigger Binding="{Binding SomeValue}" Value="SecondCollection">
<Setter Property="ItemsSource" Value="{Binding XXX.YYY.ObservableCollection2}" />
</DataTrigger>
</Style.Triggers>
</Style>
与转换器不同,每当触发值更改时,
DataTrigger
将正确地重新计算aDataTrigger
可能在这里更合适,因为您希望基于另一个值更改ItemsSource
绑定
<Style x:Key="MyListBoxStyle" TargetType="ListBox">
<Setter Property="ItemsSource" Value="{Binding XXX.ObservableCollection2}" />
<Style.Triggers>
<DataTrigger Binding="{Binding SomeValue}" Value="SecondCollection">
<Setter Property="ItemsSource" Value="{Binding XXX.YYY.ObservableCollection2}" />
</DataTrigger>
</Style.Triggers>
</Style>
与转换器不同,
DataTrigger
将在触发值更改时正确地重新计算为什么不让ViewModel
包含组合两个集合的属性?毕竟,它应该对视图进行建模:)@Rachel我只希望绑定到这两个集合中的一个,条件是我希望能够选择它是哪个集合在这种情况下,DataTrigger
在这里可能更合适,当您的条件发生变化时,它将正确地重新计算ItemsSource
属性。@Rachel DataTrigger是将其添加为答案的正确方法,我接受它的结论,它已添加为答案:)为什么ViewModel
不包含一个组合两个集合的属性?毕竟,它应该对视图进行建模:)@Rachel我只希望绑定到这两个集合中的一个,条件是我希望能够选择它是哪个集合在这种情况下,DataTrigger
在这里可能更合适,因为当您的条件发生变化时,它将正确地重新计算ItemsSource
属性。@Rachel DataTrigger是将其添加为答案的正确方法,我接受它的结论,它已添加为答案:)