2

添付ファイルを表示するための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を変更すると、アイコンの描画が停止します。

明らかに、この回避策はハッキーですが、アイコンが引き続き表示されるようにするためのより良い方法は何ですか?

4

2 に答える 2

0

DataTemplate の DataType プロパティが欠落していると思います。http://msdn.microsoft.com/en-us/library/system.windows.datatemplate.datatype.aspx。これにより、ボタンの可視性をバインドしている行でバインド エラーが発生しなかったとしたら、私は驚くでしょう。

于 2012-11-20T02:22:30.337 に答える
0

appbar_close で x:Shared=False を設定できます。また、パフォーマンスのためにPresentationOptions:FreezeRenderOptionsを使用する必要があります。

それが役に立てば幸い。

于 2012-11-22T02:12:21.650 に答える