Caliburn Micro Hello屏幕

时间:2016-11-14 15:37:35

标签: c# wpf xaml caliburn.micro

我有一个关于“Hello Screens”Caliburn Micro示例的3部分问题。 (我正在使用项目的WPF端口)。这涉及CustomerView.xaml的行为,其中包含“保存”和“关闭”按钮对。愿意接受只有1和2的答案为3可能在这一点上变得微不足道了!

每当DialogConductorViewModel激活AddressViewModel时,“保存”和“关闭”按钮都将被禁用。这发生在CustomerViewModel的EditAddress函数中:

Dialogs.ShowDialog(new AddressViewModel());

1)CustomerView的用户控件如何知道在这里被禁用?我的第一个想法是CustomerViewModel(CMV)必须已停用,因此CM可能会为我们禁用CustomerView UserControl。但是,如果在CMV中重写OnDeactivate,则只要显示带有“ShowDialog”功能的对话框,视图模型就不会被停用。

2)从WPF的角度来看,如何禁用CustomerView上的所有控件?如果我将此代码放在CustomerView.xaml中的某个位置并运行该项目,则CustomerView UserControl将始终保持启用状态:

<TextBlock Text="{Binding Path=IsEnabled, 
                    RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}"></TextBlock>

但是,如果我将任何控件上的IsEnabled绑定到CustomerView.xaml上,则在显示对话框时控件的IsEnabled属性被设置为false:

<TextBlock Text="{Binding Path=IsEnabled, 
                    ElementName=TryClose }"></TextBlock>

3)我想编写一个样式数据触发器,以便在显示对话框时改变CustomerView外观的其他方面。理想情况下,我将绑定到CustomerViewModel上的属性,但我能说的最好,这个ViewModel本身并不知道它何时通过DialogManager显示一个Dialog,除非我错过了什么。从CustVM的角度来看,CM是否为我提供了检测此对话框的方法?

谢谢,

肖恩

0 个答案:

没有答案