使用Expression Blend编辑使用DataTemplateSelector的项的DataTemplate

9
在我的应用程序中,我有一个ItemsControl元素,其中包含用户绘制的形状。每种特定形状的ViewModel都从基本的ViewModel继承而来。DataTemplateSelector根据形状的ViewModel类型应用正确的DataTemplate。
在我的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工具包,并尝试添加几个不同类型的设计时形状。Blend确实显示它们,但对于访问模板没有帮助。
有没有办法让Blend相信我的派生ViewModel对DataContext有效,从而允许我编辑模板?这是问题吗?

“但是 Expression Blend 不允许我编辑这些模板”,它是说“不行,你不可以!”还是怎样阻止你编辑呢? - H.B.
@H.B. 我试图通过“对象和时间轴”面板中的“编辑其他模板”上下文菜单来访问它们。那里可以允许我应用现有资源或创建新资源。实现模板选择器会禁用“编辑当前”选项。 - Greg M.
我怀疑这只是找不到编辑方式的问题,而不是出现了某些错误。事实上,我和Paul Stovell有着相同的想法,我应该直接建议而不是通过评论来询问。 - H.B.
1个回答

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接