【问题标题】:How do I set a custom button background for a Metro app for all states如何为所有州的 Metro 应用程序设置自定义按钮背景
【发布时间】:2012-07-05 14:55:57
【问题描述】:

我想为 Metro 风格的 Windows 8 应用程序的按钮使用我自己的位图。我可以将按钮的背景画笔设置为我自己的 ImageBrush 并且效果很好,除了悬停和按下状态。我不知道如何为它们设置位图。有谁知道怎么做?

谢谢。

【问题讨论】:

    标签: windows windows-8 windows-runtime windows-store-apps winrt-xaml


    【解决方案1】:

    WinRT XAML Toolkit 有一个 ImageButton 控件,如果您需要,它允许为所有状态定义图像。您还可以在Generic.xaml 中查看其默认模板,以了解它如何使用基于多个重叠图像控件的位图(例如 PART_HoverStateImage)和控制这些图像控件不透明度的视觉状态。 如果您是懒惰的 - 您也可以只使用两个位图并使用使用 PressedStateImageSource 定义的半透明位图覆盖在 IdleStateImageSource 定义的位图之上以显示悬停状态。或者您可以完全懒惰并仅使用单个位图作为空闲状态,并通过将 GeneratePressedState 和 GenerateHoverState 设置为 true 让控件为其他两个状态生成位图 - 通过使用一些基本图像“点亮”空闲状态图像来生成这些位图加工。该工具包还有一个示例应用程序,该应用程序带有一个页面,以多种方式演示 ImageButton 控件的使用。

    【讨论】:

    • 感谢您的反馈。我将检查该工具包,看看它是否对我有用,但您是否告诉我,不使用第三方解决方案就没有直接的方法来设置这些状态?这似乎很难相信。我的意思是,如果我不能为所有状态设置背景,为什么还要让我设置背景呢?如果我更改非按下状态的背景,我会对其他状态的默认背景感到满意的可能性有多大?
    • 你当然不会。尽管如此,它仍然可以展示您如何做到这一点。您在按钮上设置自定义控件模板,其中包含您想要的所有图像,并使用视觉状态来显示不同状态的图像。如果您有很多按钮需要根据状态显示不同的位图,ImageButton 还显示了如何为该问题创建通用解决方案。通过使用它或创建类似的东西,您可以通过为每个状态指定 ImageSource 而不是为每个按钮创建单独的模板来创建许多按钮。
    • 是的,它非常有用,我总是发现工作示例是最好的文档。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-24
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多