我有UserControl名为“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;
}
但是按钮效果不好。
答案 0 :(得分:2)
您为MVVM
标记了您的问题,但发布的代码完全违反了MVVM的规则。您可以通过以下方式严格遵守MVVM规则来实现这一目标 -
创建一个ViewModel
课程,该课程将作为DataContext
用于您的两个观看次数。
在其中创建bool property
并使用此属性绑定IsEnabled
DP,即btnBasic
和btnStandard
。
在ViewModel类中创建一个ICommand
,该类将在lobby
按钮单击时调用,并根据您的具体情况将此bool属性设置为true或false。
但正如您在上面的评论中发布的那样,您已经为两个视图分别创建了ViewModel,您可以使用Event Aggregator在两个ViewModel之间进行通信。