2012-11-19 66 views
2

我有一個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後,圖標將停止繪製。

很明顯,這種解決方法很不方便,但確保圖標仍然顯示的最好方法是什麼?

+0

您是否嘗試過在appbar_close上使用x:Shared = False? –

+0

我只是嘗試在appbar_close上設置x:Shared爲False,並且可以正常工作,但似乎這會打開我的一些性能問題,因爲圖標沒有被重用,對吧? – derosm2

回答