添付ファイルを表示するための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を変更すると、アイコンの描画が停止します。
明らかに、この回避策はハッキーですが、アイコンが引き続き表示されるようにするためのより良い方法は何ですか?