2012-05-05 4 views
1

목록 상자 MVVC의 applicaiton 내가 아주 정상적인 목록 상자가, WPF에서

<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 속성의 기본 버튼 중 하나를 숨기고 싶습니다. 예를 들어 Friend.Approved의 값이 "approved"이면 승인 버튼을 숨기고 버튼 만 표시합니다. 반면에 Friend.Approved가 "비 승인"된 가치를 지니고 있다면 반대가되고 싶습니다. 이것을 달성하는 방법?

감사합니다.

답변

1

IValueConverter 만들기 DataTriggers

그냥 당신의 DataTemplate이 추가 사용하여 순수 XAML 솔루션이 옆에 :

<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의 여러 위치에서이 숨기기 논리를 다시 사용하면 승인 된 텍스트를 가시성 변환기에 쓰는 것이 좋습니다.

0

단추 가시성 속성을 Approved에 바인딩하고 값 변환기를 사용하여 Approved을 가시성 값으로 변환하십시오.