使用Expression Blend编辑DataTemplate,用于使用DataTemplateSelector的项目

时间:2011-04-03 02:40:42

标签: wpf expression-blend

我是我的应用程序,我有一个ItemsControl元素,其中包含用户绘制的形状。每个特定形状的ViewModel都继承自基础ViewModel。 DataTemplateSelector基于形状的ViewModel类型应用正确的DataTemplate。

在我的胜利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我的派生ViewModel对DataContext有效,从而允许我编辑模板?这甚至是问题吗?

1 个答案:

答案 0 :(得分:10)

在Expression Blend的资源标签中,您应该能够找到数据模板(来自资源字典或当前屏幕)。然后,您可以单击以编辑模板。这有帮助吗?