首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从代码后台更改资源中的矢量颜色

如何从代码后台更改资源中的矢量颜色
EN

Stack Overflow用户
提问于 2018-06-05 03:43:59
回答 1查看 37关注 0票数 0

我如何从后面的代码中更改矢量颜色?此示例中的代码不起作用。

从资源字典..

代码语言:javascript
复制
<VisualBrush x:Key="Alarm-Light">
    <VisualBrush.Visual>
        <Canvas>
            <Path  Data="M12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22M12,7L7,12H10V16H14V12H17L12,7Z" Fill="#424242" />
        </Canvas>
    </VisualBrush.Visual>
</VisualBrush>

从Xaml..

代码语言:javascript
复制
<TextBlock x:Name="TextConnect" Width="20">
<Rectangle x:Name="AlarmLight" Fill="{StaticResource Alarm-Light}" Height="16" Width="16" />

代码隐藏...

代码语言:javascript
复制
 private void Connection_Check()
 {
        var brush = LocalSystem.Connected ? new SolidColorBrush(Colors.GreenYellow) : new SolidColorBrush(Colors.DimGray);
        AlarmLight.Fill = brush;
 }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-05 05:06:43

这是可行的:

代码语言:javascript
复制
    <VisualBrush x:Key="Alarm-Light">
        <VisualBrush.Visual>
            <Canvas>
                <Path Fill="{Binding RelativeSource={RelativeSource AncestorType={x:Type Window}}, Path=AlarmFill}" Data="M12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22M12,7L7,12H10V16H14V12H17L12,7Z"  />
            </Canvas>
        </VisualBrush.Visual>
    </VisualBrush>

使用下面的代码:

代码语言:javascript
复制
public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        AlarmFill = new SolidColorBrush(Colors.Blue);
    }

    /// <summary>
    /// Gets or Sets AlarmFill Dependency Property
    /// </summary>
    public Brush AlarmFill
    {
        get { return (Brush)GetValue(AlarmFillProperty); }
        set { SetValue(AlarmFillProperty, value); }
    }
    public static readonly DependencyProperty AlarmFillProperty =
        DependencyProperty.Register("AlarmFill", typeof(Brush), typeof(MainWindow), new PropertyMetadata(null));

}

或者这个:

代码语言:javascript
复制
    <VisualBrush x:Key="Alarm-Light">
        <VisualBrush.Visual>
            <Canvas>
                <Path Fill="{Binding RelativeSource={RelativeSource AncestorType={x:Type Window}}, Path=DataContext.AlarmFill}" Data="M12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22M12,7L7,12H10V16H14V12H17L12,7Z"  />
            </Canvas>
        </VisualBrush.Visual>
    </VisualBrush>

使用下面的代码:

代码语言:javascript
复制
public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        DataContext = this;
        AlarmFill = new SolidColorBrush(Colors.Blue);
    }

    /// <summary>
    /// Gets or Sets AlarmFill Dependency Property
    /// </summary>
    public Brush AlarmFill
    {
        get { return (Brush)GetValue(AlarmFillProperty); }
        set { SetValue(AlarmFillProperty, value); }
    }
    public static readonly DependencyProperty AlarmFillProperty =
        DependencyProperty.Register("AlarmFill", typeof(Brush), typeof(MainWindow), new PropertyMetadata(null));

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50687739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档