You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WinUI 3中如何将Brush转换为SolidColorBrush?

解决WPF迁移WinUI3时Brushes转SolidColorBrush的类型错误

问题根源

你代码里的Brushes.Red/Green属于System.Drawing命名空间(WPF常用),但WinUI3的SolidColorBrush依赖的是Windows.UI.Color或Microsoft.UI.Color类型,两者分属不同框架体系,直接转换会触发类型不匹配错误。

解决方案

方法1:用WinUI3内置颜色常量替换

直接使用WinUI3提供的Colors类下的颜色值,传入SolidColorBrush构造函数即可:

using Microsoft.UI.Xaml.Media;
using Windows.UI; // 或 Microsoft.UI,两者颜色常量基本一致

public SolidColorBrush PowerBrush
{
    get
    {
        if (_powerMode == PowerMode.Off)
        {
            return new SolidColorBrush(Colors.Red);
        }
        else
        {
            return new SolidColorBrush(Colors.Green);
        }
    }
}

方法2:复用WinUI3系统资源(推荐)

你注释里的系统资源更符合WinUI3设计规范,正确的资源获取方式如下:

using Microsoft.UI.Xaml.Media;

public SolidColorBrush PowerBrush
{
    get
    {
        if (_powerMode == PowerMode.Off)
        {
            return (SolidColorBrush)Application.Current.Resources["SystemFillColorCriticalBrush"];
        }
        else
        {
            return (SolidColorBrush)Application.Current.Resources["SystemFillColorSuccessBrush"];
        }
    }
}

注意:默认新建的WinUI3项目会自动包含系统资源字典,若缺失可在App.xaml中添加对应引用。

额外注意事项

  • 移除不必要的System.Drawing命名空间引用,避免命名冲突;
  • WinUI3中SolidColorBrush的构造函数仅接受Color类型参数,不能直接传入System.Drawing.Brush实例。

内容的提问来源于stack exchange,提问作者Marek Pio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 15:52:39