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