私は、CMコンダクタがActiveのコンテンツをTransitioningContentControlのコンテンツに適切にバインドすることに問題があります。それが重要な場合にはCaliburn Micro Conductor + 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)を表しているとします。
ActiveItemが正常に_viewModel1に設定されていても、Nav2をクリックして、transitioniningContentControlがトランジションを終了する前にNav1をクリックすると、Nav2のビューが画面に表示されます。
これは、ActiveItemが_viewModel1の無効な状態になりますが、表示されているビューは_viewModel2のものにバインドされています。
アイデア? ActiveItemに直接バインドするのに間違っていますか?
編集:
「ちょうど私のコード」デバッグをオフにした後、私は遷移中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
これが役立つかどうかわかりません。
を助けることを願っています。 ActiveItem setterはちょうど向きを変えて、ActivateItemをとにかく呼び出します。public T ActiveItem { get {return activeItem; } {ActivateItem(value); } } –