XAML 如何更改Maui应用程序中ContentPage标题栏或ContentPage内其他视图中的图标颜色?

llew8vvj  于 2023-02-01  发布在  其他
关注(0)|答案(2)|浏览(371)

我在Maui应用的每个ContentPage顶部添加了一个简单的图标+文本。我希望图标的颜色根据当前的AppTheme进行更改我在这个shell应用的导航标签中使用了相同的图标。当标签被选中或取消选中时,这些图标的颜色会发生变化,并且这些颜色会根据应用主题而变化。这是自动发生的,而不需要我编写代码的行为。我还没有能够找到一种方法来模仿这种行为的图标在页面的顶部。我试图避免创建多个图标图像文件的不同颜色。
我正在为我的一个导航标签使用工具箱图标。当AppTheme为Light且未选中该图标时,该图标为黑色

,当选中该图标时,该图标为蓝色

。当AppTheme为Dark时,该图标始终为白色。这将在shell应用程序中自动为我处理。
如果我在标题栏(例如设置Shell.TitleView)或其他类型的视图中使用此图标颜色,而不创建黑色、蓝色和白色工具箱图像文件,我如何为该图标颜色创建相同的行为?

qgelzfjb

qgelzfjb1#

社区工具包IconTintColorBehavior可以改变图片的颜色(着色),你可以使用绑定来改变图片的颜色,使之与主题相适应(就像this问题中那样)。
所以你会得到这样的结果:

<Shell.TitleView>
    <Image Source="logo.png">
        <Image.Behaviors>
            <toolkit:IconTintColorBehavior TintColor="{AppThemeBinding Light={DynamicResource Gray950}, Dark={DynamicResource White}}" />
        </Image.Behaviors>
    </Image>
</Shell.TitleView>
3mpgtkmj

3mpgtkmj2#

我建议使用字体格式的图标(.ttf等),这样你就可以避免创建不同颜色的图像,颜色的处理和文本的处理是一样的,这也包括大小。这里有一个例子:https://youtu.be/rYdJP2t7foU

相关问题