C# 当另一个控件的值为';什么改变了?

C# 当另一个控件的值为';什么改变了?,c#,xaml,uwp,C#,Xaml,Uwp,我有两个ComboBoxComboBox1和ComboBox2,每当ComboBox1SelectedItem被更改时,我都想执行ComboBox2转换器,如何在XAML中完成 到目前为止,我有ComboBox2的XAML: ItemsSource="{Binding MyItems, Converter={StaticResource MYConverter}, ConverterParameter= {Binding ElementName=comboBox1, Path=SelectedI

我有两个
ComboBox
ComboBox1和ComboBox2,每当ComboBox1
SelectedItem
被更改时,我都想执行ComboBox2转换器,如何在XAML中完成

到目前为止,我有ComboBox2的XAML:

ItemsSource="{Binding MyItems, Converter={StaticResource MYConverter}, ConverterParameter= {Binding ElementName=comboBox1, Path=SelectedItem,Mode=TwoWay}}" 

仅当绑定的值更改时,而不是转换器参数更改时,才会重新计算绑定,因此假设:

  • 视图模型的
    SelectedItem1
    属性绑定到
    ComboBox1
    s
    SelectedItem
    属性

  • 视图模型的
    SelectedItem2
    属性绑定到
    ComboBox2
    s
    SelectedItem
    属性

  • ViewModel的
    ComboBox2
    s
    ItemSource
    属性绑定到ViewModel上名为
    MyItems
    的属性:

  • 无论何时更改
    SelectedItem1
    ,您都应该为
    MyItems
    引发
    PropertyChanged
    事件。这样,将重新评估绑定并执行转换器


    附言:请提供更多关于您将来问题的上下文,例如您的ViewModel是什么样子。

    在代码背后,您可以创建如下内容:

    comboBox1.SelectionChanged += new SelectionChangedEventHandler(comboBox1SelectionChanged);
    
    void comboBox1SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            //Your logic here
        }
    
    它将生成一个由委托调用的事件处理程序,该处理程序应如下所示:

    comboBox1.SelectionChanged += new SelectionChangedEventHandler(comboBox1SelectionChanged);
    
    void comboBox1SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            //Your logic here
        }
    
    别忘了:

    u


    谢谢很抱歉丢失了信息,实际上我的
    ComboBox
    在一个UserControl中,它的
    ItemSource
    在父VM中,但是ComboBox1 SelectedItem1是UserControl VM的一部分,所以我如何从这个VM更新父VM的属性。@Dishant我可以想出三种方法:1。在父VM上有一个引发PropertyChanged事件的方法,并在usercontrol VM 2中调用该方法。在usercontrol VM中设置一个事件,每次
    SelectedItem1
    更改时都会引发该事件,并在父VM中处理该事件,并在父VM中引发属性更改事件3。让用户控件VM具有
    MyItems
    属性,并将用户控件绑定到该属性。我将尝试看看什么适合我的场景。由于您建议的解决方案不适合我的业务案例,我所做的遵循了本文中提到的方法。@Dishant我想说这接近方法1,细节视图模型引用了父视图模型。谢谢,但我更希望这可以通过XAML实现,因为我使用的是MVVM模式。