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

发布于 2024-10-02 01:14:23 字数 956 浏览 0 评论 0原文

假设我有一个类似

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

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

Suppose I have a style like

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

How can I set the color value of a gradient stop as labeled above to a different color, say on MouseOver, I know I use a Trigger, but how do I refer to that color value?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

猫烠⑼条掵仅有一顆心 2024-10-09 01:14:23

不幸的是,我不确定你是否可以为单个梯度停止做到这一点。您可能必须触发才能更改整个背景画笔:

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

Unfortunately, I'm not sure if you can do it for a single gradient stop. You likely have to trigger to change the entire background brush:

<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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文