Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF/Styles:设置模板元素的属性值_Wpf_Templates_Styles - Fatal编程技术网

WPF/Styles:设置模板元素的属性值

WPF/Styles:设置模板元素的属性值,wpf,templates,styles,Wpf,Templates,Styles,假设我有这样的风格 <Style x:Key="NotificationItemTemplate" TargetType="{x:Type ListBoxItem}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type ListBoxItem}"> <D

假设我有这样的风格

<Style x:Key="NotificationItemTemplate" TargetType="{x:Type ListBoxItem}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type ListBoxItem}">
                <DockPanel LastChildFill="False">
                    <DockPanel.Background>
                        <LinearGradientBrush>
                            <GradientStop Offset="0" Color="#FF565656" /> <!-- How to change color values -->
                            <GradientStop Offset="1" Color="#FF353535" />
                        </LinearGradientBrush>
                    </DockPanel.Background>
                    ...
                </DockPanel>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

...

如何将上面标记的渐变停止的颜色值设置为不同的颜色,例如在鼠标上,我知道我使用了触发器,但如何引用该颜色值?

不幸的是,我不确定是否可以对单个渐变停止执行此操作。您可能需要触发以更改整个背景笔刷:

<Style TargetType="{x:Type ListBoxItem}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type ListBoxItem}">
                <DockPanel LastChildFill="False" x:Name="dock">
                    <DockPanel.Background>
                        <LinearGradientBrush>
                            <GradientStop Offset="0" Color="#FF565656" />
                            <!-- How to change color values -->
                            <GradientStop Offset="1" Color="#FF353535" />
                        </LinearGradientBrush>
                    </DockPanel.Background>
                    <ContentPresenter />
                </DockPanel>
                <ControlTemplate.Triggers>
                    <Trigger Property="IsMouseOver" Value="True">
                        <Setter TargetName="dock" Property="Background">
                            <Setter.Value>
                                <LinearGradientBrush>
                                    <GradientStop Offset="0" Color="#00CDFFFF" />
                                    <!-- How to change color values -->
                                    <GradientStop Offset="1" Color="#FF343465" />
                                </LinearGradientBrush>
                            </Setter.Value>
                        </Setter>
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

有人投了赞成票,回头看这个问题,可以做的另一件事是创建一个“颜色”资源,供渐变站重复使用。这样,如果你只有一个不同的梯度停止。公共渐变停止都可以从单个资源进行管理,而不是在多个位置/触发器中进行维护。