Триггеры отладки (или почему этот триггер не работает?) - PullRequest
4 голосов
/ 16 января 2012

Я пытаюсь исчезнуть в элементе управления, когда он становится видимым. Следующая компиляция и работает нормально, она просто не исчезает (элемент управления мгновенно появляется, когда IsActive установлен в true)

<UserControl x:Class="blah"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:util="clr-namespace:blah.Util"
             mc:Ignorable="d" 
             d:DesignHeight="250" d:DesignWidth="400">
    <UserControl.Resources>
        <util:BooleanToVisibilityConverter x:Key="BoolToVis" />

        <Style TargetType="UserControl">
            <Style.Triggers>
                <Trigger Property="Visibility" Value="Visible">
                    <Trigger.EnterActions>
                        <BeginStoryboard>
                            <Storyboard>
                                <DoubleAnimation Storyboard.TargetProperty="Opacity" From="0.0" To="1.0" Duration="0:0:1.25" />
                            </Storyboard>
                        </BeginStoryboard>
                    </Trigger.EnterActions>
                </Trigger>
            </Style.Triggers>
        </Style>
    </UserControl.Resources>

    <UserControl.Visibility>
        <Binding Path="IsActive" Converter="{StaticResource ResourceKey=BoolToVis}" ConverterParameter="False" />
    </UserControl.Visibility> 

    <!-- Snip rest of simple control -->

</UserControl>

Во-первых, я был бы благодарен, если бы кто-нибудь мог сказать мне, почему это не работает.

Во-вторых, мне было интересно, есть ли способ отладки таких вещей, так как я часто пытаюсь заставить триггеры работать должным образом. В настоящее время моя отладка состоит в том, чтобы посмотреть на XAML, чтобы попытаться выяснить, в чем дело, или случайно изменить биты, чтобы попытаться сузить область.

Что я действительно хочу сделать, так это установить точку останова на бит <Trigger Property="Visibility" Value="Visible">, чтобы увидеть, запускается ли она в качестве отправной точки. Очевидно, я не могу этого сделать, но мне было интересно, есть ли способ сделать более структурированную отладку, чем мой текущий случайный тычок в глухую стену. : - /

1 Ответ

4 голосов
/ 16 января 2012

Установите UserControl.Visibility в стиле или вы переопределите Style.Trigger, если вы явно установите свойство Visibility.

<Setter Property="Visibility" Value="{Binding Path=IsActive, Converter={StaticResource ResourceKey=BoolToVis}, ConverterParameter=False}" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...