我有一个视图窗口,该窗口具有选项卡控件,每个选项卡内都有不同的用户控件。窗口有自己的视图模型,每个用户控件也是如此。现在如何从任何子用户控件视图模型更新主窗口视图模型的属性?
问问题
2384 次
2 回答
0
嗨,如果您从父视图模型实例化子视图模型,那么您可以通过从子视图模型触发事件并在父视图模型上侦听该事件并更新父视图模型的所需属性来实现。但是,如果您从视图(即您的 userControl)实例化您的 ViewModel,那么您需要在 UserControl 中创建 DependencyProperty 并将其绑定到父视图模型和子 ViewModel 属性,但它确实有一个问题,您只能将一个属性绑定到 xaml 中的目标属性和必须从 DependencyProperty 的 ValueChanged 更新子 ViewModel 属性。我希望这会给你一个想法。
于 2013-02-13T16:28:22.333 回答
0
我的AddUser
用户控件孩子:
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
}
于 2013-02-13T18:14:35.840 回答