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