使用另一个用户控件中的 MVVM 启用/禁用按钮
本文关键字:启用 按钮 MVVM 另一个 用户 控件 | 更新日期: 2023-09-27 18:32:10
我有一个名为"Footer.xaml"和"Header.xaml"的用户控件,这两个用户控件都放在不同的窗口中。
页脚.xaml有两个按钮:- btnBasic btn标准
Header.xaml有一个按钮:- 大堂
当我从 Header.xaml 单击大厅按钮时,我想根据我的条件更改两个按钮 [ btnBasic 和 btnStandard ] 的 IsEnabled 属性。
我尝试以下操作 [ Footer.xaml.cs ] 默认情况下,这两个按钮都是启用 = true
public partial class Footer : UserControl
{
static Footer objFooter = new Footer();
public Footer()
{
InitializeComponent();
objFooter = this;
}
public static Footer GetFooterInstance()
{
return objFooter;
}
}
和 Header.xaml 上.cs
private void btnLobby_Click(object sender, RoutedEventArgs e)
{
Footer objFooter;
objFooter = Footer.GetFooterInstance();
objFooter.btnBasic.IsEnabled = false;
objFooter.btnStandard.IsEnabled = false;
}
但是没有什么是按钮的效果。
您标记了MVVM
的问题,但发布的代码完全违反了此处的 MVVM 规则。您可以通过通过以下方式限制 MVVM 的规则来实现此目的 -
-
创建一个
ViewModel
类,该类将用作两个视图的DataContext
。 -
在其中创建一个
bool property
,并绑定IsEnabled
按钮的 DP,即具有此属性的btnBasic
和btnStandard
。 -
在 ViewModel 类中创建一个
ICommand
,单击按钮lobby
调用该并将此 bool 属性设置为 true 或 false。
但正如您在上面的评论中发布的那样,您已经为两个视图提供了单独的 ViewModels,您可以使用事件聚合器在两个 ViewModel 之间进行通信。