Редактирование DataTemplate с помощью Expression Blend для элементов, которые используют DataTemplateSelector - PullRequest
8 голосов
/ 03 апреля 2011

Я мое приложение, у меня есть элемент 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 к тому, который я выбрал, переопределяя селектор.

Я использую Light Tookit MVVM,и попытался добавить несколько форм времени разработки различных типов.Blend показывает их, но они не помогают с доступом к шаблонам.

Есть ли способ убедить Blend в том, что мои производные ViewModel действительны для DataContext, что позволяет мне редактировать шаблоны?Это даже проблема?

1 Ответ

10 голосов
/ 03 апреля 2011

На вкладке Resources в Expression Blend вы сможете найти шаблон данных (из словаря ресурсов или с текущего экрана).Затем вы можете нажать для редактирования шаблона.Это помогает?

...