相關問題的一些信息:http://www.11011.net/archives/000692.html有沒有辦法忽略的應用程序資源contentpresenter
具體情況是:有一些通用的文本塊(關鍵字等於輸入)樣式的App.xaml這是在第三方聲明應用程序,他們在我的視圖中被所有contentpresenters使用,忽略了我自己的樣式。
我發現一些可能的解決方案:
明確指定的所有元素風格,被覆蓋的模板&添加資源字典,我的樣式contentpresenter資源。
添加的DataTemplate字符串,但與訪問文本檢測的一個問題(可以通過將contentpresenter與裁判我自己的資源來解決,是不是很好的解決方案,因爲我們增加視覺樹只是爲了解決這個問題)
也許有其他解決方案?
P.S .:有很多的意見已經存在,所以第一個選項是很多工作!
要重現創建新的WPF項目和修改下一文件:
App.xaml中添加通用的風格:
<Application.Resources>
<Style TargetType="TextBlock">
<Setter Property="FontSize" Value="20"/>
</Style>
</Application.Resources>
MainWindow.xaml內容是:
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Dictionary.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<StackPanel>
<Button Content="Hello world">
<Button.ContextMenu>
<ContextMenu>
<MenuItem Header="Access_Text"/>
<MenuItem Header="NormalText"/>
</ContextMenu>
</Button.ContextMenu>
</Button>
<TextBlock Text="WELCOME TO BLACK MESA"/>
</StackPanel>
Dictionary.xaml資源字典,裏面添加一個樣式:
<Style TargetType="TextBlock">
<Setter Property="FontSize" Value="8"/>
</Style>
你見過[這個問題],(http://stackoverflow.com/questions/2370809/wpf-how-to-override-an-application-wide-style-on-textblocks-on-specific-places),可能適用。 – Grokodile
偉大的提示,但類似於第一個解決方案,在這種情況下,我們不需要重寫所有模板,只需查找子內容提供者即可添加對自己的資源字典的引用。 – trimeyko