2011-04-03 32 views
8

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,从而允许我编辑模板?这甚至是问题吗?

+0

'“但Expression Blend不允许我编辑这些模板”'它是否说“不是你!”或者它究竟如何阻止你编辑它? – 2011-04-03 03:03:36

+0

@ H.B。我试图通过“编辑附加模板”上下文菜单在“对象和时间线”面板中找到它们。这就是它允许我应用现有资源或创建一个新资源的地方。实现模板选择器禁用了“Edit Current”选项。 – 2011-04-03 13:37:11

+0

我怀疑这只是一个没有找到编辑方式的问题,而不是有一些错误,实际上我和Paul Stovell有相同的概念,我应该继续前进,并建议它而不是通过该评论进行查询。 – 2011-04-03 14:24:39

回答

10

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

+0

是的。非常简单 - 谢谢。 – 2011-04-03 13:37:45

相关问题