如何动态更改从中获取图像的资源文件夹?

时间:2016-09-30 15:44:47

标签: c# wpf data-binding

我试图为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

0 个答案:

没有答案