带有 DynamicResource 的数据触发器仅适用于 ItemsControl 中的最后一项

Datatrigger with DynamicResource works only on last item in ItemsControl

我的 DashBoardSimpleCountObject 有 2 个值:MyNameMyValue。 我使用一个名为 MyData.

ObservableCollection<DashboardSimpleCountObject>

我要展示一张图片,只要MyValuenull即可。 但是,图片(“loading”)只显示在我的ObservableCollection的最后一项(不管,里面有多少项)。一旦设置了 MyValue(除 null 以外的任何设置),它就会自动更新并正确显示 - 在所有项目上都可以正常工作。

<ItemsControl x:Name="_control" ItemsSource="{Binding MyData}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapPanel />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Grid Margin="25">
                <Label FontSize="14" Content="{Binding MyName}" />
                <Label Margin="0,25" HorizontalContentAlignment="Right" FontSize="29" FontWeight="ExtraBold" Foreground="{Binding MyColor}">
                    <Label.Style>
                        <Style TargetType="{x:Type Label}">
                            <Setter Property="Content" Value="{Binding MyValue}" />
                                <Style.Triggers>
                                <DataTrigger Binding="{Binding MyValue}" Value="{x:Null}">
                                    <Setter Property="Content">
                                        <Setter.Value>
                                            <Image Width="32" Height="32" Source="{DynamicResource loading}" />
                                        </Setter.Value>
                                    </Setter>
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                    </Label.Style>
                </Label>
            </Grid>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

我做错了什么? 非常感谢您! :)

看来,DynamicResource 的性质导致了这个问题。 只需将 DynamicResource 更改为 StaticResource 即可。

因此,DataTrigger 从一开始就运行良好。由于加载为 DynamicResource.

,该图像仅显示一次