如何使用x:Name在Caliburn.Micro中进行数据绑定对话框

时间:2019-08-02 10:10:53

标签: material-design caliburn.micro

我有一个C#程序,可在DialogHost内部启动对话框:

Dialogs.ViewModels.WriteProgramToDatabaseDialogViewModel vm = new Dialogs.ViewModels.WriteProgramToDatabaseDialogViewModel();
var view = new Views.WriteProgramToDatabaseDialogView
{
      DataContext = vm
};
var result = await DialogHost.Show(view, "RootDialog");

DialogHost是ButchersBoy的MaterialDesign框架的功能。 DialogHost

WriteProgramToDatabaseDialogViewModel只是从Caliburn Micro的“屏幕”派生的类。

现在,Caliburn Micro宠坏了我,我习惯于能够声明控件并使用XAML中的x:Name属性来绑定它们。在对话框的ViewModel中这根本不起作用,我无法理解为什么。

幸运的是,我仍然可以通过显式设置来设置控件的数据绑定:

<TextBlock Grid.Row="1" Text="{Binding MyTextProp}"/>

为了将按钮绑定到ViewModel中的方法,我可以显式绑定Click事件:

<Button cal:Message.Attach="[Event Click] = [Action RunMethodInVM]"/>

我的问题是:能够与同时拥有Caliburn Micro和Butchers Boy's Materialize经验的任何人一起解释为什么x:Name抽象不能在DialogHost内使用吗?

0 个答案:

没有答案