У меня есть наблюдаемая коллекция ViewModels, привязанная к LayoutItemTempate AvalonDock. Когда пользователь открывает проблему из извлеченного списка, он создает новый ViewModel в наблюдаемой коллекции. В результате создается новый документ, но он нов и не использует ViewModel из коллекции.Injecting Instantiated ViewModel для просмотра с AvalonDock
Я попытался использовать конвертер, но он вообще не использует конвертер. Кто-нибудь знает альтернативу? Возможно, даже решение для кода?
Вот основной фрагмент 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;
}
}
Хмм, это введенное свойство DataContext? Или? В настоящее время я работаю с AvalonDock 2.0 с помощью «настройки», аналогичной вашей, но в моем случае «DataContext» не задан после создания представления (проверка использования подписки на событие «Загружено» в представлении). Было бы хорошо, если бы вы могли немного рассказать о том, как вводится «DataContext». Благодарю. –
Nevermind, это действительно «введенное свойство». Возможно, я немного устал при проверке свойства DataContext во время события «Loaded»: D Спасибо за ваш ответ. +1. –