触发器集合成员的类型必须为EventTrigger [英] Triggers collection members must be of type EventTrigger

查看:151
本文介绍了触发器集合成员的类型必须为EventTrigger的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建了一个类似于以下内容的UserControl:

I've created a UserControl, similar to the following:

<UserControl>
    <StackPanel Orientation="Vertical">

        <StackPanel x:Name="Launch" Orientation="Horizontal" Visibility="Collapsed">
            <!-- Children here -->
        </StackPanel>

        <ToggleButton x:Name="ToggleLaunch" IsChecked="False" Content="Launch" />

    </StackPanel>
</UserControl>

我一直在尝试使用DataTrigger使启动 StackPanel在ToggleButton时可见已检查,否则保持折叠状态。但是,在运行时,我收到一条错误消息,指出对象初始化失败(ISupportInitialize.EndInit)。触发器集合成员的类型必须为EventTrigger。我尝试将其添加到UserControl和StackPanel的触发器集合中,但没有成功。我的触发器XAML如下所示:

I've been trying to use a DataTrigger to make the 'Launch' StackPanel become visible when the ToggleButton is checked, and remain collapsed otherwise. However, at runtime I get an error stating "Failed object initialization (ISupportInitialize.EndInit). Triggers collection members must be of type EventTrigger". I've tried adding it to the trigger collection of the UserControl and StackPanel with no success. My trigger XAML looks like the following:

<DataTrigger Binding="{Binding ElementName=ToggleLaunch, Path=IsChecked}" Value="True">
    <Setter TargetName="Launch" Property="UIElement.Visibility" Value="Visible" />
</DataTrigger>


推荐答案

设法解决。忘记了DataTriggers是用于 MSDN文档的Style,ControlTemplate和DataTemplate的。

Managed to figure it out. Forgot that DataTriggers are meant for Style, ControlTemplate and DataTemplate per the MSDN Docs.

解决方案是使用EventTrigger作为指示的错误消息。我的解决方案如下:

Solution was to use an EventTrigger as the error message indicated. My solution was the following:

<EventTrigger RoutedEvent="ToggleButton.Checked">
    <BeginStoryboard>
        <Storyboard>
            <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility"
                                           Storyboard.TargetName="LaunchButtons">
                <DiscreteObjectKeyFrame KeyTime="0:0:0"
                                        Value="{x:Static Visibility.Visible}" />
            </ObjectAnimationUsingKeyFrames>
        </Storyboard>
    </BeginStoryboard>
</EventTrigger>
<EventTrigger RoutedEvent="ToggleButton.Unchecked">
    <BeginStoryboard>
        <Storyboard>
            <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility"
                                           Storyboard.TargetName="LaunchButtons">
                <DiscreteObjectKeyFrame KeyTime="0:0:0"
                                        Value="{x:Static Visibility.Collapsed}" />
            </ObjectAnimationUsingKeyFrames>
        </Storyboard>
    </BeginStoryboard>
 </EventTrigger>

如果其他人有其他解决方案,将推迟将其标记为答案。

Going to hold off marking this as the answer in case someone else has another solution.

这篇关于触发器集合成员的类型必须为EventTrigger的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆