更新 XML 项源后添加列表框项时,不会调用路由事件“已加载”

本文关键字:事件 路由 调用 加载 已加载 XML 添加 列表 更新 | 更新日期: 2023-09-27 17:49:33

我在WPF中有一个ListBox,它使用指向xml文件的XMLDataProvider绑定。

我在列表框项的项模板中设置了一个情节提要,如下所示:

            <Setter Property="LayoutTransform">
            <Setter.Value>
                <ScaleTransform x:Name="transform" />
            </Setter.Value>
        </Setter>
        <Style.Triggers>
            <EventTrigger RoutedEvent="Loaded">
                <EventTrigger.Actions>
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimation Storyboard.TargetProperty="Opacity" From="0" To="1" Duration="0:0:.2" />
                            <DoubleAnimation Storyboard.TargetProperty="LayoutTransform.ScaleY" From="0" Duration="0:0:.2" />
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger.Actions>
            </EventTrigger>
        </Style.Triggers>

这在启动应用程序时首次加载文件时效果很好。但是,当我像这样将一个新的 XMl 元素添加到列表中时:

MainNode.AppendChild(NewElement)

元素将添加到列表中,但情节提要不会触发。如何确保以编程方式添加的项将"Loaded"事件调用到自身?

更新:样式应用于列表框而不是列表框项。改变解决了这个问题。

更新 XML 项源后添加列表框项时,不会调用路由事件“已加载”

如注释中所述,Style应用于将为每个新的ListBoxItem添加引发的ListBoxItem

ListBox加载的事件仅在首次加载到 UI 上时引发,之后不会引发。因此,将样式从列表框移动到列表框项。