DataTrigger.ExistActions не запускается для значения привязки "null" - PullRequest
2 голосов
/ 09 февраля 2012

У меня есть следующий datatrigger, но выходные действия не стреляют.Ввод действия действий найти.Я также попытался преобразовать Binding в логическое значение, чтобы увидеть, имеет ли оно какое-то отношение к null, но это тоже не помогло.В чем я не прав, и почему мои выходные команды не запускаются здесь?

<DataTrigger  Binding="{Binding }" Value="{x:Null}">
    <DataTrigger.EnterActions>
        <BeginStoryboard>
            <Storyboard>
                <DoubleAnimation Storyboard.TargetProperty="Opacity"  To=".5" From="0" Duration="0:0:1"></DoubleAnimation>
            </Storyboard>
        </BeginStoryboard>
    </DataTrigger.EnterActions>
    <DataTrigger.ExitActions>
        <BeginStoryboard>
            <Storyboard>
                <DoubleAnimation Storyboard.TargetProperty="Opacity"  To="0" From=".5" Duration="0:0:1"></DoubleAnimation>
            </Storyboard>
        </BeginStoryboard>
    </DataTrigger.ExitActions>
</DataTrigger>

РЕДАКТИРОВАТЬ: Здесь должно происходить что-то странное, потому что я также пытался убрать раскадровку из уравнения и просто использовать сеттеры- и НИЧЕГО не происходит сейчас ...

Итак, вместо этого я опубликую весь текстовый блок, и, возможно, кто-то может указать, что мне не хватает

<Grid DataContext="{Binding ElementName=ConfigTree, Path=SelectedItem.Details}">


                    <TextBlock HorizontalAlignment="Center" TextWrapping="Wrap" TextAlignment="Center" Padding="10" VerticalAlignment="Center" FontWeight="Bold" FontSize="14" Opacity="0">
                        Select a configuration on the right to modify its selected columns
                        <TextBlock.Style>
                            <Style TargetType="TextBlock"  BasedOn="{StaticResource {x:Type TextBlock}}">
                                <Style.Triggers>
                                    <DataTrigger  Binding="{Binding }" Value="{x:Null}">
                                        <DataTrigger.EnterActions>
                                            <BeginStoryboard>
                                                <Storyboard  Duration="0:0:1">
                                                    <DoubleAnimation Storyboard.TargetProperty="Opacity"  To=".5" From="0" Duration="0:0:1"></DoubleAnimation>
                                                </Storyboard>
                                            </BeginStoryboard>
                                        </DataTrigger.EnterActions>
                                        <DataTrigger.ExitActions>
                                            <BeginStoryboard>
                                                <Storyboard>
                                                    <DoubleAnimation Storyboard.TargetProperty="Opacity"  To="0" From=".5" Duration="0:0:1"></DoubleAnimation>
                                                </Storyboard>
                                            </BeginStoryboard>
                                        </DataTrigger.ExitActions>
                                    </DataTrigger>
                                </Style.Triggers>
                            </Style>
                        </TextBlock.Style>
                    </TextBlock>

ConfigTree - это древовидное представление, а SelectedItem.Details - это класс, который реализует observablecollection и INotifyPropertyChanged.Я проверил с помощью отладчика, эта привязка корректно обновляется и переключается назад и вперед к моему значению экземпляра и нулевому значению.

1 Ответ

0 голосов
/ 10 февраля 2012

отлично работает у меня!

         <CheckBox x:Name="MyCheckBox"
                   IsThreeState="True"
                   Content="I am Tristate! Check Me"/>

         <TextBox x:Name="MyTextBlock"
                  Background="Cyan"
                  Text="1234567890">
            <TextBox.Style>
                <Style TargetType="{x:Type TextBox}">
                    <Style.Triggers>
                        <DataTrigger 
                            Binding="{Binding ElementName=MyCheckBox,
                                              Path=IsChecked}"
                            Value="{x:Null}">
                            <DataTrigger.EnterActions>
                                <BeginStoryboard>
                                    <Storyboard>
                                        <DoubleAnimation
                                          Storyboard.TargetProperty="Opacity"
                                          To=".5" From="0"
                                          Duration="0:0:1">
                                        </DoubleAnimation>
                                    </Storyboard>
                                </BeginStoryboard>
                            </DataTrigger.EnterActions>
                            <DataTrigger.ExitActions>
                                <BeginStoryboard>
                                    <Storyboard>
                                        <DoubleAnimation
                                          Storyboard.TargetProperty="Opacity"
                                          To="0" From="0.5"
                                          Duration="0:0:1">
                                        </DoubleAnimation>
                                    </Storyboard>
                                </BeginStoryboard>
                            </DataTrigger.ExitActions>
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </TextBox.Style>
        </TextBox>
...