我有一个 ListView 来显示附件,每个附件都有一个删除按钮。当我更改列表的 ItemSource 时(即查看具有不同附件的另一个项目时),删除按钮的图标不再绘制。
这是模板
<DataTemplate x:Key="attachmentListData">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Label Grid.Column="0">
<TextBlock TextTrimming="CharacterEllipsis" Text="{Binding Path=filename}" TextDecorations="{Binding Path=deleted, Converter={StaticResource deletedStrikethroughConverter}}" />
</Label>
<Button Grid.Column="1" Visibility="{Binding Path=deleted, Converter={StaticResource attachmentDeleteButtonVisibilityConverter}}" Style="{DynamicResource MetroCircleButtonStyle}" Width="40" Height="40" Click="onDeleteAttachmentClicked">
<Rectangle Fill="Black" Width="15" Height="15">
<Rectangle.OpacityMask>
<VisualBrush Visual="{StaticResource appbar_close}" Stretch="Fill" />
</Rectangle.OpacityMask>
</Rectangle>
</Button>
</Grid>
</DataTemplate>
通过将 appbar_close 图标绘制在屏幕的其他位置,但将可见性设置为隐藏,我已经能够解决此问题。如果图标不在屏幕的其他位置,则在我更改 ItemSource 后,图标将停止绘制。
显然,这种解决方法很麻烦,但是确保图标仍然显示的更好方法是什么?