【问题标题】:Why is the Canvas' Background property a generic "SolidColorBrush" instead of an actual color?为什么 Canvas 的 Background 属性是通用的“SolidColorBrush”而不是实际颜色?
【发布时间】:2014-11-30 16:47:30
【问题描述】:

我想响应画布上的点击并将画布背景的值存储在应用设置中,以便我可以将该值分配给 AppBar/命令栏。所以我在用户控件中有这个 XAML:

<StackPanel Orientation="Horizontal">
    <Canvas Background="Aqua" Width="20" Height="20" VerticalAlignment="Center" Tapped="CanvasColor_Tapped"></Canvas>
    <TextBlock Text="Aqua" VerticalAlignment="Center" Tapped="CanvasColor_Tapped" ></TextBlock>
</StackPanel>

.. 处理程序是:

private void CanvasColor_Tapped(object sender, TappedRoutedEventArgs treArgs)
{
    if (sender is Canvas)
    {
        Brush colour = ((Canvas)sender).Background;
        String brushColorAsStr = colour.ToString();
        IAppSettings appSettings;
        if (App.SaveSettingsLocally)
        {
            appSettings = new AppSettingLocal();
        }
        else
        {
            appSettings = new AppSettingsRoaming();
        }
        appSettings.SaveSetting(VisitsConsts.APP_BAR_COLOR_SETTING, brushColorAsStr);
    }
}

然而,brushColorAsStr 的值只是“Windows.UI.XAML.Media.SolidColorBrush”(我希望它类似于“Magenta”或“Windows.UI.XAML.Media.SolidColorBrush.Magenta”)

如何获取背景的实际值而不仅仅是其类型?

更新

我不明白如何实施 SLaks 的回答;我试过了:

Brush brsh = ((Canvas) sender).Background;
//var color = (SolidColorBrush)brsh.
//var color = ((SolidColorBrush) sender).Color;
//var color = (SolidColorBrush).((Canvas)sender).Color;

【问题讨论】:

    标签: c# background windows-store-apps brush solidcolorbrush


    【解决方案1】:

    因为SolidColorBrush 不会覆盖ToString()

    要提取实际颜色,请将其转换为 SolidColorBrush 并使用 Color 属性。

    【讨论】:

      【解决方案2】:

      扩展 SLaks 答案:

      例子:

      var canvas = sender as Canvas;
      var brush = canvas.Background as SolidColorBrush;
      var color = brush.Color;
      

      请注意,这是可行的,因为您将默认设置为单一纯色。这就是为什么它是SolidColorBrush。您可以将其设置为任何类型的画笔、线性渐变、纹理或任何您喜欢的。出于显而易见的原因,如果您设置的不是单色纯色画笔,上面的代码将无法正常工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-07-12
        • 2013-10-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多