首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MultiDataTrigger不工作吗?

MultiDataTrigger不工作吗?
EN

Stack Overflow用户
提问于 2011-10-25 15:33:58
回答 2查看 4.2K关注 0票数 1

我想为我的TabControl配置一个MultiDataTrigger。当标签悬停时,它应该会改变颜色。但如果选择了选项卡,则不会。我试过MultiDataTrigger了。但它似乎不起作用。这是我的风格:

代码语言:javascript
复制
<Style TargetType="{x:Type TabItem}">
<Setter Property="Template">
    <Setter.Value>
        <ControlTemplate TargetType="{x:Type TabItem}">
            <Grid>
                <Border Name="Border" BorderBrush="Black" BorderThickness="0.5,0.5,0.5,0" CornerRadius="4,4,0,0">
                    <ContentPresenter x:Name="ContentSite" VerticalAlignment="Center" HorizontalAlignment="Center" ContentSource="Header" Margin="12,2,12,2"/>
                </Border>
            </Grid>
            <ControlTemplate.Triggers>
                <Trigger Property="IsSelected" Value="True">
                    <Setter TargetName="Border" Property="Background">
                        <Setter.Value>
                            <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
                                <GradientStop Color="#fefeff" Offset="0" />
                                <GradientStop Color="#e7edf6" Offset="1" />
                            </LinearGradientBrush>
                        </Setter.Value>
                    </Setter>
                </Trigger>
                <Trigger Property="IsSelected" Value="False">
                    <Setter TargetName="Border" Property="Background">
                        <Setter.Value>
                            <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
                                <GradientStop Color="#c5d0df" Offset="0" />
                                <GradientStop Color="#aab4c2" Offset="1" />
                            </LinearGradientBrush>
                        </Setter.Value>
                    </Setter>
                </Trigger>
                <MultiDataTrigger>
                    <MultiDataTrigger.Conditions>
                        <Condition Binding="{Binding Path=IsMouseOver}" Value="True" />
                        <Condition Binding="{Binding Path=IsSelected}" Value="False" />
                    </MultiDataTrigger.Conditions>
                    <Setter TargetName="Border" Property="Background">
                        <Setter.Value>
                            <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
                                <GradientStop Color="#dde6f2" Offset="0" />
                                <GradientStop Color="#c6d0de" Offset="1" />
                            </LinearGradientBrush>
                        </Setter.Value>
                    </Setter>
                </MultiDataTrigger>

            </ControlTemplate.Triggers>
        </ControlTemplate>
    </Setter.Value>
</Setter>

有什么问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-25 16:04:43

DataTriggers使用DataContext作为源。我确信IsMouseOverIsSelected不是来自数据上下文的属性,它们是选项卡项的属性。

我建议使用包含普通Trigger Condition的普通MultiTrigger

票数 2
EN

Stack Overflow用户

发布于 2011-10-25 16:18:43

将触发器更改为:

代码语言:javascript
复制
<MultiTrigger.Conditions>
    <Condition Property="IsSelected" Value="false"/>
    <Condition Property="IsMouseOver" Value="true"/>
</MultiTrigger.Conditions>

根据AngelWPF's的回答,DataTrigger将尝试绑定到当前的DataContext,在那里它将找不到与属性匹配的任何内容。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7886048

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档