带有 DynamicResource 的数据触发器仅适用于 ItemsControl 中的最后一项
Datatrigger with DynamicResource works only on last item in ItemsControl
我的 DashBoardSimpleCountObject
有 2 个值:MyName
和 MyValue
。
我使用一个名为 MyData
.
的 ObservableCollection<DashboardSimpleCountObject>
我要展示一张图片,只要MyValue
是null
即可。
但是,图片(“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
.
,该图像仅显示一次
我的 DashBoardSimpleCountObject
有 2 个值:MyName
和 MyValue
。
我使用一个名为 MyData
.
ObservableCollection<DashboardSimpleCountObject>
我要展示一张图片,只要MyValue
是null
即可。
但是,图片(“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
.