CM Conductor が Active を TransitioningContentControl のコンテンツに適切にバインドするのに問題があります。
それが重要な場合に備えて、私はConductor<Screen>.Collection.OneActive
問題を再現する手順
導体 ActiveItem にバインドされた TransitioningContentControl を作成します。
<toolkit:TransitioningContentControl x:Name="ActiveItem" />
2 つのボタンを作成します。
<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 をクリックすると、ActiveItem が正常に _viewModel1 に戻されても、Nav2 のビューが画面に表示されたままになります。
これにより、ActiveItem が _viewModel1 である無効な状態になりますが、表示されるビューは _viewModel2 にバインドされます。
アイデア?ActiveItem に直接バインドすることに何か問題がありますか?
編集:
「Just my code」デバッグをオフにした後、移行中に ActiveItem を設定すると ArgumentException がスローされることがわかりました。スタック トレースは次を示します。
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
それが役立つかどうかはわかりません。