我有一个绑定到 AvalonDock 的 LayoutItemTempate 的 ViewModel 的 Observable 集合。当用户从获取的列表中打开一个问题时,它会在 observable 集合中创建一个新的 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;
}
}