В моем приложении есть элемент ItemsControl, в котором размещаются фигуры, нарисованные пользователем. ViewModel каждой конкретной формы наследуется от базовой ViewModel. DataTemplateSelector применяет правильный DataTemplate на основе типа ViewModel фигуры.
в моем win xaml:
<ItemsControl ItemsSource="{Binding MarkupElements}"
ItemTemplateSelector="{StaticResource MarkupTemplateSelector}"/>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas Panel.ZIndex="1" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
в словаре ресурсов:
<DataTemplate x:Key="MarkupLineTemplate" DataType="x:Type vm:MarkupLineViewModel">
<.../>
</DataTemplate>
<DataTemplate x:Key="MarkupCircleTemplate" DataType="x:Type vm:MarkupCircleViewModel">
<.../>
</DataTemplate>
<view:MarkupTemplateSelector
LineTemplate="{StaticResource MarkupLineTemplate}"
CircleTemplate="{StaticResource MarkupCircleTemplate}"
x:Key="MarkupTemplateSelector"/>
Это работает нормально, но Expression Blend не позволяет мне редактировать эти шаблоны. Я могу заставить Blend применить определенный шаблон, но затем он добавляет свойство ItemTemplate
к моему win.xaml, установленному на тот, который я выбрал, переопределив селектор.
Я использую MVVM Light Tookit , и попытался добавить несколько фигур разных типов во время разработки. Blend показывает их, но они не помогают с доступом к шаблонам.
Есть ли способ убедить Blend в том, что мои производные ViewModels действительны для DataContext, что позволяет мне редактировать шаблоны? Это вообще проблема?