1

我有名为“Footer.xaml”和“Header.xaml”的用户控件两个用户控件都放置在不同的窗口中。

Footer.xaml 有两个按钮:- btnBasic btnStandard

Header.xaml 有一个按钮:- 大厅

当我单击 Header.xaml 中的 Lobby 按钮时,我想根据我的情况更改两个按钮 [ btnBasic 和 btnStandard ] 的 IsEnabled 属性。

我尝试下面的事情 [Footer.xaml.cs] 默认情况下两个按钮 IsEnabled = 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;
    }

但是没有什么是按钮的效果。

4

1 回答 1

2

您标记了您的问题,MVVM但发布的代码完全违反了此处的 MVVM 规则。您可以通过以下方式严格遵守 MVVM 的规则来实现这一点 -

  1. 创建一个ViewModel将作为DataContext您的两个视图的类。

  2. 在其中创建一个并使用此属性为您的按钮bool property绑定IsEnabledDP 。btnBasicbtnStandard

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

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

于 2013-09-21T07:00:56.913 回答