2016-08-18 3 views
0

나는 ItemTemplateListBox을 가지고 있습니다. 하나는 이고 하나는 Delete Button입니다.WPF에서 DataTrigger를 사용하는 ListBox 항목 숨기기 Count에 기반한 ListBox

내 요구 사항 : ObservableCollection<string> Person에 레코드가 하나만있는 경우 삭제 Button을 숨겨야합니다. 둘 이상의 레코드가 있으면 모든 항목에 대해 삭제 Button을 표시해야합니다.

XAML :

<ListBox ItemsSource="{Binding Person, UpdateSourceTrigger=PropertyChanged}" Background="Transparent" Margin="0 10" HorizontalContentAlignment="Stretch"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <Grid HorizontalAlignment="Stretch"> 
        <Grid.RowDefinitions> 
         <RowDefinition Height="Auto"/> 
         <RowDefinition Height="Auto"/> 
        </Grid.RowDefinitions> 
        <TextBox Grid.Row="0" Text="{Binding Contact, UpdateSourceTrigger=PropertyChanged}" /> 
        <Button Grid.Row="1" Content="X" Foreground="Red" /> 
      </Grid> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
    <ListBox.Style> 
     <Style TargetType="{x:Type ListBox}"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Path=Items.Count, RelativeSource={RelativeSource Self}}" Value="1"> 
        <Setter Property="Visibility" Value="Collapsed" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </ListBox.Style> 
</ListBox> 

DataTrigger :

<ListBox.Style> 
     <Style TargetType="{x:Type ListBox}"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Path=Items.Count, RelativeSource={RelativeSource Self}}" Value="1"> 
        <Setter Property="Visibility" Value="Collapsed" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </ListBox.Style> 

이 친절하게 어떻게 내 요구 사항에 대한 DataTrigger을 설정하는 나에게 도움이됩니다.

답변

0

DataTrigger는 버튼의 스타일에있을 수 있습니다 :

<Button ...> 
    <Button.Style> 
     <Style TargetType="Button"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Items.Count, 
           RelativeSource={RelativeSource AncestorType=ListBox}}" 
          Value="1"> 
        <Setter Property="Visibility" Value="Collapsed"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Button.Style> 
</Button>