【问题标题】:Is it possible to change control visibility from another control trigger是否可以从另一个控件触发器更改控件可见性
【发布时间】:2012-08-20 11:27:42
【问题描述】:

我有这种样式并触发组合框的 IsMouseOver 属性(变成菜单)。我想在触发此触发器时(当鼠标悬停在项目上时)更改另一个对象的可见性,这可能吗?目前我只是在发生这种情况时设置前台,但我认为它们一定是一种方式。

<Style x:Key="HeaderMenuButtonStyle" TargetType="TextBlock">
    <Setter Property="Margin" Value="0,0,20,5" />
    <Setter Property="Foreground" Value="{StaticResource HeaderMenuButtonColorBrush}" />
    <Setter Property="FontSize" Value="24" />
    <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="Foreground" Value="{StaticResource HeaderMenuButtonHoverColorBrush}" />
        </Trigger>
    </Style.Triggers>
</Style>

【问题讨论】:

    标签: c# wpf xaml triggers styles


    【解决方案1】:

    您可以通过在受影响的控件上放置触发器来反转逻辑,但是您需要一种方法来定位应用此样式的控件。

    例如

    <DataTrigger Binding="{Binding IsMouseOver, ElementName=ThatMenuItem}" ...>
    

    使用Interactivity (Blend SDK) 中的触发器和操作,您可能会影响其他控件,但您需要恢复您的操作,因为这些操作是必要的(即,false 上的触发器也是如此,执行必要的操作恢复在true-trigger 中所做的操作)。

    【讨论】:

    • HB 菜单正在动态创建(使用数据绑定到视图模型),所以我不知道元素名称。是否有可能以其他方式做到这一点?
    • 有点棘手(我不精通 WPF)但可以做我想做的事。感谢您的帮助,为上帝+1 :)
    • 很高兴你可以自己解决 :) (实际上我现在想想就很惊讶,Interactivity 并不是真的适合Styles,不管你怎么做都很好做到了)
    猜你喜欢
    • 2017-02-28
    • 2017-12-14
    • 2015-12-31
    • 1970-01-01
    • 2011-11-05
    • 2016-01-21
    • 1970-01-01
    • 1970-01-01
    • 2011-11-03
    相关资源
    最近更新 更多