2011-04-03 30 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

相關問題