AvalonDock の LayoutItemTempate にバインドされた ViewModel の Observable Collection があります。ユーザーが取得したリストから問題を開くと、監視可能なコレクションに新しい ViewModel が作成されます。その結果、新しいドキュメントが作成されますが、これは新しく、コレクションの ViewModel を使用していません。
コンバーターを使ってみたのですが、全然コンバーターを使っていないようです。誰かが代替案を知っていますか? おそらく、コード ビハインド ソリューションでさえありますか?
メインの XAML スニペットを次に示します。. .
<Window.Resources>
<pconv:IProblemInfoToFreeResponseVMConverter x:Key="FreeResponseToVM" />
</Window.Resources>
. . . { some lines down } . . .
<dock:DockingManager.LayoutItemTemplateSelector>
<selector:LayoutItem>
<selector:LayoutItem.ProblemEditViewTemplate>
<DataTemplate>
<problem:FreeResponseEdit
DataContext="{Binding SelectedProblem,
Converter={StaticResource FreeResponseToVM}}" />
</DataTemplate>
</selector:LayoutItem.ProblemEditViewTemplate>
</selector:LayoutItem>
</dock:DockingManager.LayoutItemTemplateSelector>
私のコンバーターコード。. .
[ValueConversion(typeof(FreeResponse), typeof(FreeResponseEditViewModel))]
public class IProblemInfoToFreeResponseVMConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value is FreeResponse)
return new FreeResponseEditViewModel(value as FreeResponse);
return value;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value is FreeResponseEditViewModel)
return (value as FreeResponseEditViewModel).ProblemItem;
return value;
}
}