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

时间:2015-05-10 08:43:24

标签: c# xaml windows-phone-8.1 winrt-xaml

我正在创建一个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>

XAML可以根据需要显示图像。

<Grid>        
    <Image HorizontalAlignment="Center" 
           VerticalAlignment="Center" 
           Stretch="None" 
           Style="{ThemeResource ShowImage}">
    </Image>
</Grid>

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

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

1 个答案:

答案 0 :(得分:2)

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

  1. 打开了应用
  2. 根据主题显示正确的图像
  3. 使用“开始”按钮
  4. 最小化应用
  5. 更改了主题并恢复了应用
  6. 它改变了背景和相应的图像。 请再次检查您是否犯了其他错误,并且在您发布的代码中,您将图像源设置为两个主题中的相同图像

    <Setter Property="Source" value="Assets/image.png"/>