有没有办法忽略的应用程序资源contentpresenter
相关问题的一些信息: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>
不知道,你可能会做它,因为我不明白你的应用程序的结构,但如果你想从删除样式应用程序资源,你可以做到这一点编程这样
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
ResourceDictionary dic = App.Current.Resources;
dic[typeof (TextBlock)] = null;
}
}
使用您在测试WPF项目中提供的XAML这给我留下的默认字体大小,而不是。
我不想修改应用资源,因为它的第三方主机应用程序;) – trimeyko
你见过[这个问题],(http://*.com/questions/2370809/wpf-how-to-override-an-application-wide-style-on-textblocks-on-specific-places),可能适用。 – Grokodile
伟大的提示,但类似于第一个解决方案,在这种情况下,我们不需要重写所有模板,只需查找子内容提供者即可添加对自己的资源字典的引用。 – trimeyko