【问题标题】:change style of stackpanel childs on mouseover在鼠标悬停时更改堆栈面板子项的样式
【发布时间】:2014-12-19 17:35:40
【问题描述】:

如何在鼠标悬停时为堆栈面板中的 2 个不同控件设置样式? 我有以下内容:

<StackPanel Orientation="Horizontal">
      <Image x:Name="InfoImg" Source="off.png"/>
      <Label x:Name="InfoLabel" Content="OFF"/>
</StackPanel>

onMouseOver the stackpanel,我想将图像源更改为

<Image x:Name="InfoImg" Source="on.png"/>

和标签文本到

<Label x:Name="InfoLabel" Content="ON"/>

提前致谢

【问题讨论】:

    标签: c# wpf


    【解决方案1】:
    <StackPanel>
        <StackPanel.Style>
            <Style TargetType="{x:Type StackPanel}">
                <Style.Triggers>
                    <Trigger Property="IsMouseOver" Value="True">
                        <Setter TargetName="YOUR_IMAGE_NAME" Property="Source" Value="on.png"/>
                        <Setter TargetName="YOUR_TEXTBLOCK_NAME" Property="Text" Value="ON"/>
                    </Trigger>
                </Style.Triggers>
            </Style>
        </StackPanel.Style>
        <StackPanel.Resources>
            <Style TargetType="{x:Type Image}">
                <Setter Property="Source" Value="off.png"/>
            </Style>
            <Style TargetType="{x:Type TextBlock}">
                <Setter Property="Text" Value="OFF"/>
            </Style>
        </StackPanel.Resources>
    </StackPanel>
    

    如果您只想将它​​们应用于特定的图像和文本块等,您可以为这些样式添加一个键。

    【讨论】:

    • 嗨..问题是:只有当鼠标悬停在图像本身时,图像才会改变..而且标签只会在鼠标悬停时改变文本......我需要当鼠标悬停在 STACKPANEL 本身(鼠标悬停在包含两个控件的容器上)时,更改它们(图像和标签)
    • @lebhero 编辑了我的帖子。您需要在 TextBlock 和 Image 上指定 x:Name 并将它们放在 TargetName 属性中才能正常工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-23
    • 1970-01-01
    • 2018-05-23
    • 2020-10-11
    相关资源
    最近更新 更多