我有一個問題讓我的CM Conductor保持Active的適當綁定到TransitioningContentControl的內容。Caliburn微導體+ TransitioningContentControl
在它的事項的情況下,我使用的是Conductor<Screen>.Collection.OneActive
步驟來重現問題
創建綁定到導體上TransitioningContentControl ActiveItem:
<toolkit:TransitioningContentControl x:Name="ActiveItem" />
創建兩個按鈕:
<Button x:Name="Nav1" Content="Test1"></Button>
<Button x:Name="Nav2" Content="Test2"></Button>
在視圖模型,線了NAV1和NAV2點擊事件設置activeitem
public void Nav1()
{
ActiveItem = _viewModel1;
}
public void Nav2()
{
ActiveItem = _viewModel2;
}
乍一看,這似乎很好地工作 - 但有一個問題。假設活動項目代表Nav1(_viewModel1)。
如果您然後單擊Nav2,然後在transitioniningContentControl完成轉換之前單擊Nav1,Nav2的視圖仍將顯示在屏幕上,即使ActiveItem將成功設置回_viewModel1。
這使您處於ActiveItem爲_viewModel1的無效狀態,但正在顯示的視圖綁定爲_viewModel2。
想法?有沒有直接綁定到ActiveItem的問題?
編輯:
關閉「只是我的代碼」調試後,我看到有一個ArgumentException在過渡期間設置ActiveItem時被拋出。堆棧跟蹤顯示:
at MS.Internal.XcpImports.CheckHResult(UInt32 hr)
(lots of junk)
Caliburn.Micro!Caliburn.Micro.View.SetContentPropertyCore(object targetLocation, object view) + 0xec bytes
Caliburn.Micro!Caliburn.Micro.View.SetContentProperty(object targetLocation, object view) + 0x84 bytes
Caliburn.Micro!Caliburn.Micro.View.OnModelChanged(System.Windows.DependencyObject targetLocation, System.Windows.DependencyPropertyChangedEventArgs args) + 0xda bytes
不確定這是否有幫助。
無所謂。 ActiveItem設置器只是轉過身來,並且無論如何都調用ActivateItem:public T ActiveItem {{{0} {get} {return activeItem; } set {ActivateItem(value); } } – 2012-05-17 22:33:46