我有我的应用程序启动并与CM运行。 shell视图包含多个ContentControl,它本身包含视图。这些按惯例分配,因为它们的名称与视图模型中的属性匹配。Caliburn.Micro新窗口不遵循约定
我得到了一个WPF窗口(至少它的类继承自Window
),它是从我的应用程序打开的windowManager.ShowDialog(viewModel)
。再次在这个窗口中,我有ContentControls,但这些不绑定到视图模型属性。
我已经试图在窗口上设置cal:View.ApplyConventions="True"
但这也没有帮助。我也使用ViewModelBinder.Bind(viewmodel, view, null)
到绑定虚拟机和查看窗口之前显示 - 也不工作。
如何确保我打开的窗口(模态对话框)使用相同的CM增强功能?
这是视图:
<Window x:Class="Client.Views.History.HistoryView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:cal="clr-namespace:Caliburn.Micro;assembly=Caliburn.Micro"
Title="Historie" Height="300" Width="300"
cal:View.ApplyConventions="True"
>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="64" />
<RowDefinition Height="*" />
<RowDefinition Height="20" />
</Grid.RowDefinitions>
<ContentControl x:Name="HeaderView" Grid.Row="0" Grid.Column="0" />
<ContentControl x:Name="RecordView" Grid.Row="1" Grid.Column="0" />
<Border Grid.Row="2" Grid.Column="0" Background="DarkKhaki" BorderThickness="2" BorderBrush="DarkSeaGreen" />
</Grid>
</Window>
这样的观点被加载显示边框。 DataContext应该由caliburn micro设置。这是视图模型:
public class HistoryViewModel : PropertyChangedBase
{
#region Fields --------------------------------------------------------
private readonly HeaderViewModel headerView;
private readonly RecordViewModel recordView;
#endregion
public HistoryViewModel()
{
this.headerView = IoC.Get<HeaderViewModel>();
this.recordView = IoC.Get<RecordViewModel>();
}
public HeaderViewModel HeaderView
{
get { return this.headerView; }
}
public RecordViewModel RecordView
{
get { return this.recordView; }
}
}
构造函数运行,视图模型创建(NOT NULL)。但是从不访问属性HeaderView
和RecordView
。
要启动这个我用这个代码:
HistoryViewModel viewModel = IoC.Get<HistoryViewModel>();
windowManager.ShowDialog(viewModel);
明确地结合当模特这样它的工作原理:
<ContentControl x:Name="HeaderView" cal:View.Model="{Binding HeaderView}" Grid.Row="0" Grid.Column="0" />
<ContentControl x:Name="RecordView" cal:View.Model="{Binding RecordView}" Grid.Row="1" Grid.Column="0" />
但我想知道怎么标准mechaniscs可以重新启用。
这可能有助于看到一些代码。 DataContext是否在窗口本身是正确的,并且预期的视图是否至少可以正确显示? – Chris
@Chris我加了一些代码。是显示窗口的视图 - 只是其ContentControls的内容而已。 – ZoolWay