我有我的應用程序啓動並與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