VisualBrush исчезает анимация - PullRequest
0 голосов
/ 01 июля 2019

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

<VisualBrush x:Key="CustomHatchBrush" TileMode="None" Viewport="0,0,100,100" ViewportUnits="Absolute" Viewbox="0,0,100,100" ViewboxUnits="Absolute">
    <VisualBrush.Visual>
        <Canvas>
            <Canvas.Triggers>
                <EventTrigger RoutedEvent="FrameworkElement.Loaded">
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimation Duration="0:0:0.2" From="0" To="1" Storyboard.TargetProperty="(Canvas.Opacity)" RepeatBehavior="1x" />
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
                <EventTrigger RoutedEvent="FrameworkElement.Unloaded">
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimation Duration="0:0:0.2" From="1" To="0" Storyboard.TargetProperty="(Canvas.Opacity)" RepeatBehavior="1x" />
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
            </Canvas.Triggers>
            <Rectangle Canvas.Top="0" Canvas.Left="0" Width="100" Height="100" Fill="Orange" />
            <Rectangle Canvas.Top="0" Canvas.Left="0" Width="100" Height="100" Fill="{DynamicResource CaretBrush}" />
        </Canvas>
    </VisualBrush.Visual>
</VisualBrush>

Обычно я хочу использовать его внутри Template of ListBoxItem как BorderBrush, что-то вроде этого:

<ControlTemplate TargetType="{x:Type ListBoxItem}">
    <Border x:Name="ca" BorderThickness="3" SnapsToDevicePixels="true" Padding="0">
        <Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="4" Background="Transparent" HorizontalAlignment="Center" VerticalAlignment="Center" SnapsToDevicePixels="true" Padding="0">
            <ContentPresenter HorizontalAlignment="Stretch" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
        </Border>
    </Border>
    <ControlTemplate.Triggers>
        <MultiDataTrigger>
            <MultiDataTrigger.Conditions>
                <Condition Binding="{Binding Prop1}" Value="true"/>
                <Condition Binding="{Binding Prop2}" Value="true"/>
            </MultiDataTrigger.Conditions>
            <Setter Property="BorderBrush" TargetName="ca" Value="{DynamicResource CustomHatchBrush}"/>
        </MultiDataTrigger>
        <MultiDataTrigger>
            <MultiDataTrigger.Conditions>
                <Condition Binding="{Binding Prop1}" Value="true"/>
                <Condition Binding="{Binding Prop2}" Value="false"/>
            </MultiDataTrigger.Conditions>
            <Setter Property="BorderBrush" TargetName="ca" Value="{DynamicResource CustomHatchBrush2}"/>
        </MultiDataTrigger>
        <DataTrigger Binding="{Binding Prop1}" Value="false">
            <Setter Property="BorderBrush" TargetName="ca" Value="Transparent"/>
        </DataTrigger>
    </ControlTemplate.Triggers>
</ControlTemplate>

Я пробовал много способов применения раскадровки, например, внутри привязок, но он всегда завершается мгновенно, полностью игнорируя длительность раскадровки.

Чего мне не хватает? Этот элемент управления в целом работает нормально (объекты имеют имя и имеют несколько экземпляров, поэтому что-то может пойти не так), я просто не могу создать визуальный эффект, которого я хотел бы достичь.

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