Wpf 可观察集合的多重绑定

Wpf 可观察集合的多重绑定,wpf,binding,observablecollection,Wpf,Binding,Observablecollection,我正在使用wpf和多重绑定来创建ViewModel列表 假设我有一个与ViewModel类型相同的ObservableCollection,如下所示: 代码: 视图: 无论何时更改颜色框的SelectedColor,5个形状的颜色是否会同时自动更改为颜色框的SelectedColor 如果我将UserControl的DataContext设置为一个ShapeVM,那么只会更改其中一个ShapeVM的颜色 但是,我想在更改颜色框的SelectedColor的同时更改5个ShapeVM。我怎么能

我正在使用wpf和多重绑定来创建ViewModel列表

假设我有一个与ViewModel类型相同的ObservableCollection,如下所示:

代码:

视图:


无论何时更改颜色框的SelectedColor,5个形状的颜色是否会同时自动更改为颜色框的SelectedColor

如果我将UserControl的DataContext设置为一个ShapeVM,那么只会更改其中一个ShapeVM的颜色

但是,我想在更改颜色框的SelectedColor的同时更改5个ShapeVM。我怎么能这样做


非常感谢。

解决您问题的另一个简单方法是

<ComboBox x:Name="cmb" Grid.Row="0" ItemsSource="{Binding ShapeVMs}" DisplayMemberPath="Color" Height="40" SelectedValue="{Binding Path=SelectedColor,ElementName=clrbox}" SelectedValuePath="Color"/>
    <ColorBox x:Name="clrbox"/>


我希望这个能有所帮助

将VM的Color属性绑定到您的ColorBox:

  • 从DependencyObject派生ShapeVM
  • 让颜色成为一个依赖属性
  • 为ColorBox指定一个名称(x:name=“TheColorBox”)
  • 对于实例化的每个ShapeVM,在代码隐藏中创建一个绑定:

    绑定=新绑定(); inding.source=色块; binding.Path=newpropertypath(ColorBox.SelectedColorProperty); SetBinding(shapeVM.ColorProperty,binding)


  • (由于某些原因,代码标记无法工作,抱歉)

    它只能更新组合框中的一项(SelectedItem)?但我想要的是,每当在ColorBox中更改SelectedColor时,更新ComboBox中的所有ShapeVM。我怎么能这样做?谢谢。对不起,我误解了这个问题,我认为在颜色属性集合中,可以使用循环将集合的所有颜色设置为值,也可以编写转换器,但逻辑相同,因此,最好在要绑定到SelectedColorI的颜色属性的setter中设置selectedColor。我更新了上述解决方案,但我使用了TextBox和PhoneNumber而不是ShapeVM,而不是ColorBox。但逻辑是在SelectedItemName属性的setter中编写的。
    <UserControl .........>
    
        <ColorBox SelectedColor="{Binding Path=Color, Mode=TwoWay}" />
    
    </UserControl>
    
    <ComboBox x:Name="cmb" Grid.Row="0" ItemsSource="{Binding ShapeVMs}" DisplayMemberPath="Color" Height="40" SelectedValue="{Binding Path=SelectedColor,ElementName=clrbox}" SelectedValuePath="Color"/>
        <ColorBox x:Name="clrbox"/>