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,每当ComboBox1SelectedItem
被更改时,我都想执行ComboBox2转换器,如何在XAML中完成
到目前为止,我有ComboBox2的XAML:
ItemsSource="{Binding MyItems, Converter={StaticResource MYConverter}, ConverterParameter= {Binding ElementName=comboBox1, Path=SelectedItem,Mode=TwoWay}}"
仅当绑定的值更改时,而不是转换器参数更改时,才会重新计算绑定,因此假设:
SelectedItem1
属性绑定到ComboBox1
sSelectedItem
属性SelectedItem2
属性绑定到ComboBox2
sSelectedItem
属性ComboBox2
sItemSource
属性绑定到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模式。