我有一个资源字典,我在其中为我的应用程序定义了样式和控件模板。现在我想定义更多的资源字典来定位不同的屏幕分辨率,每个屏幕分辨率一个。如何在App.XAML中检测客户端屏幕分辨率并加载特定的资源字典?
我当前的App.XAML:
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Resources\BlueYellow\BlueYellowTheme.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
答案 0 :(得分:1)
我认为你可以制作markupExtension,它根据分辨率返回适当的资源字典uri,并像这样使用它:
<ResourceDictionary Source="{ThemeUriAccordingToCurrentResolution}" />
答案 1 :(得分:1)
我可以看到能够根据屏幕分辨率切换资源的价值,你显然必须做一些工作,将大量的分辨率放到一个易于管理的短名单中,找到“最适合”的目前的一个,但在这里你去。
App.cs
protected override void OnStartup(StartupEventArgs e)
{
// Get the width and height, you might want to at least round these to a few values.
var width = System.Windows.SystemParameters.PrimaryScreenWidth;
var height = System.Windows.SystemParameters.PrimaryScreenHeight;
// make the resource path from them.
string resourceName = string.Format("Themes\resource{0}x{1}", width, height);
// Add the resource to the app.
Application.Current.Resources.MergedDictionaries.Add((ResourceDictionary)Application.LoadComponent(new Uri(resourceName, UriKind.Relative)));
base.OnStartup(e);
}