我是我的应用程序,我有一个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有效,从而允许我编辑模板?这甚至是问题吗?
答案 0 :(得分:10)
在Expression Blend的资源标签中,您应该能够找到数据模板(来自资源字典或当前屏幕)。然后,您可以单击以编辑模板。这有帮助吗?