Как изменить цвет вектора в ресурсе из кода позади - PullRequest
0 голосов
/ 04 июня 2018

Как бы я изменил цвет вектора из кода?Код в этом примере не работает.

Из словаря ресурсов ..

<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 ..

<TextBlock x:Name="TextConnect" Width="20">
<Rectangle x:Name="AlarmLight" Fill="{StaticResource Alarm-Light}" Height="16" Width="16" />

Код позади ...

 private void Connection_Check()
 {
        var brush = LocalSystem.Connected ? new SolidColorBrush(Colors.GreenYellow) : new SolidColorBrush(Colors.DimGray);
        AlarmLight.Fill = brush;
 }

1 Ответ

0 голосов
/ 05 июня 2018

Это работает:

    <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>

С этим кодом:

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));

}

Или вот этим:

    <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>

С этим кодом:

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));

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...