我已经为ResourceDictionary中的所有控件定义了一个常用的Font样式。
现在,要求是用户在某些应用程序级别配置中设置任何其他不同的Font,然后所有控件都应该获得新的Font属性/样式。
我知道ResourceDictionary不能拥有DataContext。但是可能有数百个字体(不可能有不同的主题),我在想是否有任何方法可以将ResourceDictionary的Font属性绑定到一个Property,它将在运行时获取新的Font。 那么有没有其他方法以通用的方式满足这一点。
答案 0 :(得分:1)
您可以通过类似
的代码为app.resources设置新值app.Resources[name] = new FontFamily(value);
其中app是您的应用程序(显然),并且可以在App.xaml.cs中直接更改资源时使用this
进行设置
name
是您的资源键,作为字符串,可以是例如"fontFamily"
<FontFamily x:Key="fontFamily">TheSansOsF</FontFamily>
您必须将字体的绑定设置为动态资源,否则更改字体将无法“即时”工作
<Setter Property="Label.FontFamily" Value="{DynamicResource fontFamily}"></Setter>
编辑:此外,当您尝试使用例如double作为资源,你可以使用像这样的资源
<sys:Double x:Key="ctrlWidth">50</sys:Double>
并将sys添加到应用程序标记
<Application x:Class="Presenter.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"