2011-01-27 88 views
13

我在app.xaml中有一個DataTemplate,它將視圖綁定到視圖模型。app.xaml中的datatemplate沒有被拾取而沒有任何樣式?

<Application.Resources> 
    <DataTemplate DataType="{x:Type vm:someviewmodeltype}"> 
     <vw:somevwcontrol /> 
    </DataTemplate> 
</Application.Resources> 

如果沒有樣式,則上述模板不適用。我把一種風格,像那一刻...

<Application.Resources> 
    <DataTemplate DataType="{x:Type vm:someviewmodeltype}"> 
     <vw:somevwcontrol /> 
    </DataTemplate> 
    <Style TargetType="TextBlock"> 
     <Setter Property="FontSize" Value="20"></Setter> 
    </Style> 
</Application.Resources> 

的DataTemplate被拾起併產生期望的結果...我不知道發生了什麼有...可能有人澄清這一點?

謝謝。

回答

18

已回答相似問題here。問題並不完全一樣,其中一個包含合併字典被跳過,但最有可能是同一個錯誤。

這是一個優化錯誤,請參閱this link

論 XAML創建的每個對象的,如果默認的樣式是本 (即風格瓦特/類型的鍵),其 樣式應該應用。正如你可以想象有幾個性能 優化,使(暗示) 查找儘可能輕的重量。其中一個 是我們不看 資源字典,除非它們是 標記爲「包含默認 樣式」。有一個錯誤:如果所有 默認樣式都嵌套在合併的 字典三級深度(或 更深)中,頂級字典不會標記爲 ,因此搜索將跳過它。 解決方法是將默認 樣式設置爲 根詞典中的任何內容。

我看到你已經找到了解決方法,只需在App.xaml中添加一個默認的虛擬樣式即可。它不必有任何setter等,像這樣的事情也會這樣做

<Application.Resources> 
    <DataTemplate DataType="{x:Type vm:someviewmodeltype}"> 
     <vw:somevwcontrol /> 
    </DataTemplate> 
    <Style TargetType="{x:Type Rectangle}" /> 
</Application.Resources> 
+0

花了一整天的時間尋找這個。解決了! – JvdBerg 2015-04-29 16:16:01