我有一个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后,图标将停止绘制。
显然,这种解决方法很麻烦,但确保图标仍然显示的更好方法是什么?
答案 0 :(得分:0)
我认为你缺少DataTemplate上的DataType属性。 http://msdn.microsoft.com/en-us/library/system.windows.datatemplate.datatype.aspx。如果您没有在绑定按钮可见性的行上给出绑定错误,我会感到惊讶。
答案 1 :(得分:0)
您可以在appbar_close中设置x:Shared = False,并且还应使用PresentationOptions:Freeze,RenderOptions来提高效果。
希望它有所帮助。