我试图为WPF应用程序实现2个不同的主题。我找到了@bendewey的这篇优秀文章: "Can WPF themes be used to include multiple skins for an application that can be changed at runtime?"
并用它来实现两个主题。我创建了两个资源文件夹,让我们称它们为ResourcesTheme1和ResourcesTheme2以及两个具有样式的Xaml资源字典文件(Style1.xaml& Style2.xaml)。
有了这个,我就可以设置以下样式: 在Style1.xaml
中<Style x:Key="HomeViewBackGroundImage" TargetType="Image">
<Setter Property="Source" Value="/ResourcesTheme1/Background.png" />
</Style>
在Style2.xaml
中<Style x:Key="HomeViewBackGroundImage" TargetType="Image">
<Setter Property="Source" Value="/ResourcesTheme2/Background.png" />
</Style>
这对我有用(如果有更好的方法,请随时提出建议)。
我没有遇到的问题是,在我的mainPage xaml中,我想要放置一排按钮,每个按钮都有自己的图像,它可以从绑定到ObservableCollection。我希望Binding能够查看正确的资源文件夹,但不知道如何在不编写代码的情况下实现它。
所以我所拥有的是以下Binding:
<Image Name="ContentImage" Source="{Binding ImageName}" Stretch="UniformToFill">
以下代码:
if (useTheme1)
{
imageName = "/PlayingWithThemes;component/ResourcesTheme1/" + imageFileName;
}
else
{
imageName= "/PlayingWithThemes;component/ResourcesTheme2/" + imageFileName;
}
关于如何使图像的来源像:
的任何想法Source="ResourceFoler + {Binding ImageName}"
或者是否有更通用的东西:
/PlayingWithThemes;component/ResourcesTheme1/"
我可以使用。
提前致谢。
A