MultiDataTrigger не работает? - PullRequest
       3

MultiDataTrigger не работает?

1 голос
/ 25 октября 2011

Я хочу иметь MultiDataTrigger для моего TabControl.Когда вкладка наведена, она должна изменить цвет.Но не если вкладка выбрана.Я попробовал MultiDataTrigger.Но это не похоже на работу.Вот мой стиль:

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

Что-то не так?

Ответы [ 2 ]

4 голосов
/ 25 октября 2011

Измените свой триггер на:

<MultiTrigger.Conditions>
    <Condition Property="IsSelected" Value="false"/>
    <Condition Property="IsMouseOver" Value="true"/>
</MultiTrigger.Conditions>

В соответствии с Ответом AngelWPF DataTrigger попытается привязаться к текущему DataContext, где он не найдет ничего, соответствующего свойствам.

2 голосов
/ 25 октября 2011

DataTriggers используют DataContext в качестве источника.И я уверен, что IsMouseOver и IsSelected не являются свойствами из вашего контекста данных, это свойства элемента вкладки.

Я предлагаю использовать обычный MultiTrigger с обычными Trigger Condition св нем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...