在MVVM中单击按钮时调用用户控件的方法

本文关键字:用户 控件 方法 调用 MVVM 单击 按钮 | 更新日期: 2023-09-27 18:29:35

我有一个MVVM应用程序。好吧,由于各种原因,它并不是完全100%纯MVVM,但我正在努力遵循它最重要的原则。

我想在Button点击时调用MyUserControl.xaml.cs中包含的MyUserControl类的Foobar方法(它执行纯视图相关逻辑)。ButtonMyUserControl实例都存在于同一个PageView中(其数据上下文是一些不相关的视图模型)。

<Button Click="Foobar"/>不起作用,因为存根出现在PageView.xaml.cs而不是MyUserControl.xaml.cs中。

是否可以将Button的Click事件与XAML中的Foobar调用链接起来?

在MVVM中单击按钮时调用用户控件的方法

如果你真的需要通过XAML来实现,你可以尝试将一个公共属性ICommand添加到你的MyUserControl类中,并在这个命令中执行Foobar方法。然后将其绑定到PageView的xaml中,如下所示:

<Button Command="{Binding ElementName=myUserControl, Path=FoobarCommand}" />
这是可能的。按照MVVM中的要求使用ICommand。然后你可以简单地调用这样的方法:
<Button Command={Binding CFoobar} .../>

CFoobar是Viewmodel(DataContext)中方法的命令。我希望我们谈论的是同样的问题。