使用另一个用户控件中的 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 规则。您可以通过通过以下方式限制 MVVM 的规则来实现此目的 -

  1. 创建一个ViewModel类,该类将用作两个视图的DataContext

  2. 在其中创建一个bool property,并绑定IsEnabled按钮的 DP,即具有此属性的 btnBasicbtnStandard

  3. 在 ViewModel 类中创建一个ICommand,单击按钮lobby调用该并将此 bool 属性设置为 true 或 false。

但正如您在上面的评论中发布的那样,您已经为两个视图提供了单独的 ViewModels,您可以使用事件聚合器在两个 ViewModel 之间进行通信。