根据浅色或深色的主题选择更改图像

Rob*_*its 5 c# xaml winrt-xaml windows-phone-8.1

我正在创建一个 Windows Phone 8.1 应用程序,我在其中使用了许多图像,这些图像应根据所选主题浅色或深色显示。

明暗图像是使用正确的命名和缩放创建的。

我创建了以下 ThemeResource 以根据所选主题设置图像源。

<ResourceDictionary>
    <ResourceDictionary.ThemeDictionaries>
        <ResourceDictionary x:Key="Light">
            <Style x:Key="ShowImage" TargetType="Image">
                <Setter Property="Source" Value="Assets/image.png"/>                            
            </Style>
        </ResourceDictionary>
        <ResourceDictionary x:Key="Dark">
            <Style x:Key="ShowImage" TargetType="Image">
                <Setter Property="Source" value="Assets/image.png"/>
            </Style>
        </ResourceDictionary>                
    </ResourceDictionary.ThemeDictionaries>
</ResourceDictionary>
Run Code Online (Sandbox Code Playgroud)

以及根据需要显示图像的 XAML。

<Grid>        
    <Image HorizontalAlignment="Center" 
           VerticalAlignment="Center" 
           Stretch="None" 
           Style="{ThemeResource ShowImage}">
    </Image>
</Grid>
Run Code Online (Sandbox Code Playgroud)

当我使用选定的主题启动应用程序时,每次都会显示正确的图像。但是,当我选择不同的主题然后切换回我的应用程序时,我可以看到背景颜色已更新,但我的图像并未动态更新。

据我所知,应该使用 ThemeResource 来动态更新它,但我无法让它工作。有人知道我的 XAML 代码有什么问题吗?

Aks*_*ain 4

您发布的代码对我来说效果非常好。您能否发布有关如何重现该问题的更多详细信息。这就是我所做的。

  1. 打开应用程序
  2. 它根据主题显示正确的图像
  3. 使用“开始”按钮最小化应用程序
  4. 更改了主题并恢复了应用程序

它改变了背景和相应的图像。请再次检查您是否犯了其他错误,并且在您发布的代码中您将两个主题中的图像源设置为相同的图像

<Setter Property="Source" value="Assets/image.png"/>
Run Code Online (Sandbox Code Playgroud)