Im我的应用程序,我有一个容纳用户绘制形状的ItemsControl元素。每个特定形状的ViewModel都从基本ViewModel继承。 DataTemplateSelector根据形状的ViewModel类型应用正确的DataTemplate。使用Expression Blend编辑DataTemplate以使用DataTemplateSelector的项目
在我赢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,从而允许我编辑模板?这甚至是问题吗?
'“但Expression Blend不允许我编辑这些模板”'它是否说“不是你!”或者它究竟如何阻止你编辑它? – 2011-04-03 03:03:36
@ H.B。我试图通过“编辑附加模板”上下文菜单在“对象和时间线”面板中找到它们。这就是它允许我应用现有资源或创建一个新资源的地方。实现模板选择器禁用了“Edit Current”选项。 – 2011-04-03 13:37:11
我怀疑这只是一个没有找到编辑方式的问题,而不是有一些错误,实际上我和Paul Stovell有相同的概念,我应该继续前进,并建议它而不是通过该评论进行查询。 – 2011-04-03 14:24:39