2011-02-25 3 views
1
<StackPanel Grid.Column="0" > 
      <Button Name="buttonEditListBoxItem" Content="Edit" Click="buttonEditListBoxItem_Click"></Button> 
      <ListBox Name="ListBoxTriggers" 
       SelectedValuePath="TriggerId" 
       IsSynchronizedWithCurrentItem="True" 
       SelectionChanged="Triggers_SelectionChanged" 
       ScrollViewer.HorizontalScrollBarVisibility="Auto" 
       HorizontalContentAlignment="Stretch"> 
      <ListBox.ItemTemplate> 
       <DataTemplate><Grid > 
          <Grid.ColumnDefinitions> 
           <ColumnDefinition Width="AUTO"/> 
           <ColumnDefinition Width="*"/> 
          </Grid.ColumnDefinitions> 
          <CheckBox Grid.Column="0" VerticalAlignment="Center" x:Name="checkBoxTriggers" ></CheckBox> 
          <Button Grid.Column="1" Style="{StaticResource GlassButton}" 
          Uid="{Binding Path=TriggerId}" 
          Margin="5" 
          x:Name="ButtonTrigger" 
          GotFocus="ButtonTrigger_GotFocus" 
          > 
           <Button.Content> 
            <TextBlock Foreground="White" TextAlignment="Justify" 
             TextWrapping="Wrap" Margin="6" Text="{Binding Path=Name}"/> 
           </Button.Content> 
          </Button> 
         </Grid> 
        </DataTemplate> 
       </ListBox.ItemTemplate></ListBox> 

      </StackPanel> 

버튼과 체크 박스가 포함 된 데이터 템플릿으로리스트 박스를 만들고 싶습니다. 내가 뭘하고 싶은지 편집 버튼을 클릭하면이 확인란이 표시되어야하고 다시 클릭하면 해당 확인란을 보이지 않게하거나 접을 수 있도록 할 것입니다.wpf listbox에 다중 선택을위한 체크 박스 추가하기

답변 : 이제 코드를 변경했습니다 : '

</Window.Resources> <StackPanel Grid.Column="0" > 
      <ToggleButton Name="buttonEditListBoxItem" 
          Content="Edit" 
          IsChecked="False" 
          Click="buttonEditListBoxItem_Click"></ToggleButton> 
      <ListBox Name="ListBoxTriggers" 
       SelectedValuePath="TriggerId" 
       IsSynchronizedWithCurrentItem="True" 
       SelectionChanged="Triggers_SelectionChanged" 
       ScrollViewer.HorizontalScrollBarVisibility="Auto" 
       HorizontalContentAlignment="Stretch"> 
      <ListBox.ItemTemplate> 
       <DataTemplate> <Grid > 
          <Grid.ColumnDefinitions> 
           <ColumnDefinition Width="AUTO"/> 
           <ColumnDefinition Width="*"/> 
          </Grid.ColumnDefinitions> 
          <CheckBox Visibility="{Binding ElementName=buttonEditListBoxItem, Path=IsChecked, Converter={StaticResource visibilityConverter}}" Grid.Column="0" VerticalAlignment="Center" x:Name="checkBoxTriggers" ></CheckBox> 
          <Button Grid.Column="1" Style="{StaticResource GlassButton}" 
          Uid="{Binding Path=TriggerId}" 
          Margin="5" 
          x:Name="ButtonTrigger" 
          GotFocus="ButtonTrigger_GotFocus" 
          > 
           <Button.Content> 
            <TextBlock Foreground="White" TextAlignment="Justify" 
             TextWrapping="Wrap" Margin="6" Text="{Binding Path=Name}"/> 
           </Button.Content> 
          </Button> 
         </Grid> 
        </DataTemplate> </ListBox.ItemTemplate> 
     </ListBox>` `public class VisibilityConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return ((Boolean)value) ? Visibility.Visible : Visibility.Collapsed; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return (((Visibility)value) == Visibility.Visible); 
    } 
}` 

답변

1

것을 달성 할 수있는 가장 쉬운 방법은 토글 버튼을 사용하는 것입니다

예 :

<ToggleButton Name="Toggler"> 
</ToggleButton> 
<StackPanel Visibility="{Binding ElementName=Toggler, Path=Checked, Converter={StaticResource booleanToVisibilityConverter}}"> 
<!-- in here you can place the checkboxes--> 
</StackPanel> 

방금 ​​열거 가시성

서로에 부울에서 변환하는 valueconverter을 만들어야합니다 "ToggleButton"과 조합하여 "Popup"요소를 사용할 수 있습니다 (항목을 편집하기 위해 팝업하는 작은 도우미의 느낌을주고 StaysOpen = "False"가 설정된 경우 f를 잃으면 바로 닫음) ocus) 이 방법을 사용하면 확인란을 숨기려면 편집 버튼을 눌러야 할 필요가 없습니다.

+0

답변을 주셔서 감사합니다. ToggleButton을 추가하고 IsChecked 속성을 사용하여 가시성 변환기에서 확인란의 가시성을 결정했습니다. – batrulz

+0

후속 질문 .... 내가 컨트롤로 이것을 사용하고 buttonEditListBoxItem.isVisible = false ....와 같은 속성을 사용해야하는 경우 이것을 사용할 수있는 usercontrol/custom 컨트롤로 변환합니까? 어떤 창에서 – batrulz

1

어떻게 VisibilityConverterToggleButton 대신 Button 사용에 대한 :

<ListBox Name="ListBoxTriggers" 
      SelectedValuePath="TriggerId" 
      IsSynchronizedWithCurrentItem="True" 
      SelectionChanged="Triggers_SelectionChanged" 
      ScrollViewer.HorizontalScrollBarVisibility="Auto" 
      HorizontalContentAlignment="Stretch"> 
    <ListBox.Resources> 
     <local:VisibilityConverter x:Key="VisibilityConverter" /> 
    </ListBox.Resources> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <Grid> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="AUTO" /> 
        <ColumnDefinition Width="*" /> 
       </Grid.ColumnDefinitions> 
       <CheckBox Grid.Column="0" 
          VerticalAlignment="Center" 
          x:Name="checkBoxTriggers" 
          Visibility="{Binding ElementName=ButtonTrigger, Path=IsChecked, Converter={StaticResource VisibilityConverter}}"></CheckBox> 
       <ToggleButton Grid.Column="1" 
           Uid="{Binding Path=TriggerId}" 
           Margin="5" 
           x:Name="ButtonTrigger" 
           GotFocus="ButtonTrigger_GotFocus"> 
        <ToggleButton.Content> 
         <TextBlock Foreground="White" 
            TextAlignment="Justify" 
            TextWrapping="Wrap" 
            Margin="6" 
            Text="{Binding Path=Name}" /> 
        </ToggleButton.Content> 
       </ToggleButton> 
      </Grid> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

VisibilityConverter :

,536를
public class VisibilityConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return ((Boolean)value) ? Visibility.Visible : Visibility.Collapsed; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return (((Visibility)value) == Visibility.Visible); 
    } 
} 
+0

답변을 주셔서 감사합니다. ToggleButton을 추가하고 IsChecked 속성을 사용하여 가시성 변환기에서 확인란의 가시성을 결정했습니다. – batrulz

+0

템플릿 안의 버튼이 내 체크 박스의 가시성을 결정하기를 원하지 않습니다. 거기에 내가 결정하고자하는 목록 상자 밖의 편집 버튼이 있습니다. 고마워요,하지만 대답은 도움이 않았다. – batrulz

관련 문제