'System.Windows.Interactivity.EventTrigger' 必须将 IsFrozen 设置为 false 才能修改

'System.Windows.Interactivity.EventTrigger' must have IsFrozen set to false to modify

我正在尝试在故事板完成后执行命令。但是这样做我得到了一个 InvalidOperationException:''System.Windows.Interactivity.EventTrigger' 类型的指定值必须将 IsFrozen 设置为 false 才能修改。'

这是我的代码:

<ItemsControl x:Name="ItemsControl" 
                  HorizontalAlignment="Right"
                  VerticalAlignment="Bottom"
                  Width="250">
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <Border x:Name="MainBorder" 
                        Background="Gray"
                        Margin="10"
                        Height="100">
                    <Border.RenderTransform>
                        <TranslateTransform X="0"/>
                    </Border.RenderTransform>
                    <Button BorderThickness="0"
                            BorderBrush="Transparent"
                            Background="Transparent"
                            Foreground="Black"
                            Width="20"
                            Height="20"
                            HorizontalAlignment="Right"
                            VerticalAlignment="Top"
                            Content="x">
                        <Button.Triggers>
                                    <EventTrigger RoutedEvent="Button.Click">
                                        <BeginStoryboard>
                                    <Storyboard>
                                                <i:Interaction.Triggers>
                                                    <i:EventTrigger EventName="Completed">
                                                        <i:InvokeCommandAction Command="{Binding DataContext.ClearToastCommand, Mode=OneWay, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"
                                                                                       CommandParameter="{Binding .}"/>
                                                    </i:EventTrigger>
                                                </i:Interaction.Triggers>
                                                <DoubleAnimation By="260" 
                                                                 Duration="0:0:1"
                                                                 Storyboard.TargetName="MainBorder"
                                                                 Storyboard.TargetProperty="RenderTransform.X">
                                                    <DoubleAnimation.EasingFunction>
                                                        <PowerEase EasingMode="EaseOut" />
                                                    </DoubleAnimation.EasingFunction>
                                                </DoubleAnimation>
                                            </Storyboard>
                                        </BeginStoryboard>
                                    </EventTrigger>
                                </Button.Triggers>
                            </Button>
                        </Border>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
        <ItemsControl.Items>
            <system:String>ItemsControl Item #1</system:String>
        </ItemsControl.Items>
    </ItemsControl>

感谢您的帮助!

好的,通过将 i: 内容放在 Storyboard 之外并在 EventTrigger 中使用 SourceName 找到了一个可行的解决方案。

        <ItemsControl x:Name="ItemsControl" 
                  HorizontalAlignment="Right"
                  VerticalAlignment="Bottom"
                  Width="250">
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <Border x:Name="MainBorder" 
                        Background="Gray"
                        Margin="10"
                        Height="100">

                    <Border.RenderTransform>
                        <TranslateTransform X="0"/>
                    </Border.RenderTransform>
                    <Button BorderThickness="0"
                            BorderBrush="Transparent"
                            Background="Transparent"
                            Foreground="Black"
                            Width="20"
                            Height="20"
                            HorizontalAlignment="Right"
                            VerticalAlignment="Top"
                            Content="x">
                        <i:Interaction.Triggers>
                            <i:EventTrigger EventName="Completed" 
                                            SourceName="sb">
                                <i:InvokeCommandAction Command="{Binding DataContext.ClearToastCommand, Mode=OneWay, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"
                                                       CommandParameter="{Binding .}"/>
                            </i:EventTrigger>
                        </i:Interaction.Triggers>
                        <Button.Triggers>
                            <EventTrigger RoutedEvent="Button.Click">
                                <BeginStoryboard>
                                    <Storyboard x:Name="sb">
                                        <DoubleAnimation By="260" 
                                                         Duration="0:0:1"
                                                         Storyboard.TargetName="MainBorder"
                                                         Storyboard.TargetProperty="RenderTransform.X">
                                            <DoubleAnimation.EasingFunction>
                                                <PowerEase EasingMode="EaseOut" />
                                            </DoubleAnimation.EasingFunction>
                                        </DoubleAnimation>
                                    </Storyboard>
                                </BeginStoryboard>
                            </EventTrigger>
                        </Button.Triggers>
                    </Button>
                </Border>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
        <ItemsControl.Items>
            <system:String>ItemsControl Item #1</system:String>
        </ItemsControl.Items>
    </ItemsControl>