1

WPF、MVVC アプリケーションでは、非常に通常のリストボックスがあります。

<ListBox ItemsSource="{Binding Friends}">
</ListBox>

次に、リストの各項目は次のデータ テンプレートを使用します。

<DataTemplate DataType="{x:Type model:Friend}">
    <Border BorderThickness="1" BorderBrush="Gray" Padding="3" Name="border" Margin="3">
        <StackPanel Grid.Row="1" Grid.Column="2" Orientation="Horizontal">
            <TextBlock Name="DescriptionDTDataType" Text="{Binding Path=ConnectedUserID}" />
            <TextBlock Name="StatusTitle" Margin="8,0,4,0">Status:</TextBlock>
            <TextBlock Name="Status" Text="{Binding Path=Approved}" />
            <Button Content="Approve" Command="{x:Static inf:Commands.ApproveUserConnection}" CommandParameter="{Binding}"></Button>
            <Button Content="Disapprove" Command="{x:Static inf:Commands.DisapproveUserConnection}" CommandParameter="{Binding}"></Button>
        </StackPanel>
    </Border>
</DataTemplate>

質問は... Friend.Approved プロパティの基本にあるボタンの 1 つを非表示にしたいです。たとえば、Friend.Approved の値が「承認済み」の場合、[承認済み] ボタンを非表示にして、[否認] ボタンのみを表示します。一方、 Friend.Approved の値が「不承認」の場合は、反対が必要です。これを達成する方法は?

ありがとうございました。

4

2 に答える 2

1

IValueConverterの作成に加えて、DataTriggersを使用した純粋なXAMLソリューションがあります

これをDataTemplateに追加するだけです。

<DataTemplate.Triggers>
    <DataTrigger Binding="{Binding Approved}" Value="approved" >
        <Setter TargetName="Approve" Property="Visibility" Value="Collapsed"/>
    </DataTrigger>
    <DataTrigger Binding="{Binding Approved}" Value="disapproved" >
        <Setter TargetName="Disapprove" Property="Visibility" Value="Collapsed"/>
    </DataTrigger>
</DataTemplate.Triggers>

ボタンに名前を付けます。

<Button Name="Approve" Content="Approve" ...></Button>
<Button Name="Disapprove" Content="Disapprove" ...></Button>

ただし、この非表示ロジックを複数のDataTemplatesの複数の場所で再利用する場合は、承認済みテキストを可視性コンバーターに書き込む方が適切です。

于 2012-05-05T07:42:28.183 に答える
0

Buttons Visibility プロパティをバインドしApproved、値コンバーターを使用して Visibility 値に変換Approvedします。

于 2012-05-05T07:35:04.303 に答える