我有一個ListView來顯示附件,每個附件都有一個刪除按鈕。當我更改列表的ItemSource(即查看具有不同附件的其他項目時)時,刪除按鈕的圖標不再繪製。DataTemplate中的VisualBrush不重繪
這裏是模板
<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後,圖標將停止繪製。
很明顯,這種解決方法很不方便,但確保圖標仍然顯示的最好方法是什麼?
您是否嘗試過在appbar_close上使用x:Shared = False? –
我只是嘗試在appbar_close上設置x:Shared爲False,並且可以正常工作,但似乎這會打開我的一些性能問題,因爲圖標沒有被重用,對吧? – derosm2