我有一个视图窗口,每个标签内都有不同用户控件的标签控件。窗口有自己的视图模型,每个用户控件也是如此。现在,如何从任何子用户控件视图模型更新主窗口视图模型的属性?
答案 0 :(得分:0)
如果您要从Parent ViewModel实例化子视图模型,那么您可以通过从子视图模型触发事件并在Parent ViewModel上侦听该事件并更新Parent ViewModel的所需属性来实现。但是如果你从View中实例化ViewModel,即你的userControl然后你需要在UserControl中创建DependencyProperty并将它绑定到Parent View Model和Child ViewModel属性,但它确实有一个问题,你只能将一个属性绑定到xaml中的target属性,必须从DependencyProperty的ValueChanged更新Child ViewModel属性。我希望这会给你一个想法。
答案 1 :(得分:0)
我的AddUser
UserControl孩子:
public event EventHandler<RoutedEventArgs> SaveUser;
// Wherever I want that event to be launched I write this:
private void buttonSaveUser_Click(object sender, RoutedEventArgs e)
{
EventHandler<RoutedEventArgs> handler = SaveUser;
handler(this, userEventArgs);
}
在您的MainWindow.xaml
,创建UserControl
孩子后,请接受该活动:
addUser = new F7AddUser();
addUser.SaveUser += AddUser;
然后创建新的AddUser
方法(此方法必须位于您的MainWindow.xaml
)。请小心,因为这个来自event
,所以参数必须与启动它的事件相同:
private void AddUser(object o, RoutedEventArgs e)
{
// Stuff here
}