2011-08-11 3 views
4

하나의 listBox에 확인란이 있습니다. 이벤트가 끝나면 각 확인란의 선택을 취소해야합니다.CheckBoxList의 값을 지우시겠습니까?

이것은 내 xaml이지만 코드에서 어떻게이 값을 지울 수 있습니까? 덕분에

<ListBox Name="_employeeListBox" ItemsSource="{Binding employeeList}" Margin="409,27,41,301"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <Grid> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition /> 
        <ColumnDefinition /> 
        <ColumnDefinition /> 
        <ColumnDefinition /> 
        <ColumnDefinition /> 
       </Grid.ColumnDefinitions> 
       <CheckBox Grid.Column="0" Name="CheckBoxZone" Content="{Binding OperatorNum}" Tag="{Binding TheValue}" Checked="CheckBoxZone_Checked"/> 
       <TextBlock Grid.Column="1"></TextBlock> 
       <TextBlock Grid.Column="2" Text="{Binding Name}"></TextBlock> 
       <TextBlock Grid.Column="3"></TextBlock> 
       <TextBlock Grid.Column="4" Text="{Binding LastName}"></TextBlock> 
      </Grid> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

    private void _searchProjectsbyEmployeebutton_Click_1(object sender, RoutedEventArgs e) 
    { 
     List<EmployeebyProject> employeebyProjectList = new List<EmployeebyProject>(); 
     if (EmployeeCollectionToInsert.Count != 0) 
     { 
      foreach (var employee in EmployeeCollectionToInsert) 
      { 
       foreach(var employeebyProject in employee.EmployeebyProject) 
       { 
        employeebyProjectList.Add(employeebyProject); 
       } 
      } 
      LoadEmployeebyProject(employeebyProjectList); 
      //HERE I NEED UNCHECKED the ListBoxChecked.    
     } 
     else { MessageBox.Show("Please select an employee to search his project."); } 
    } 
+0

나는 당신의 applicaiton은보기와 뷰 모델 사이의 더 분리를 필요로하는 제안을 구현해야합니다. – EtherDragon

답변

1

This 포스트는 ListBox 기반으로 Template의 아이템을 얻을 수있는 방법을 설명합니다. 당신은 찾을 유사한 기술을 사용하는 CheckBox 및 검사 CheckBox을 가지고있다거나 선택 취소 간단한되면

+0

문제는 내가 wpf에서 일하고 있는데, FindVisualChild가 여기에서 작동하지 않습니다. 어쩌면 당신은 이것을 만들기위한 다른 참조를 가지고 있습니다 ... – ale

+0

내가 게시 한 링크는 WPF 예제이고'FindViusalChild'가 확실히 작동합니다. 그것은 같은 게시물에 쓰여진 방법입니다. –

2

당신은 ListBoxItemsSource 바인딩하고 ListBox가 ItemsPanel로 VirtualizingStackPanel을 사용하여 모든 ListBoxItem 용기 수도 있고 수도 있습니다 주어진 시간에 생성되지 않습니다.
비주얼 트리 등을 검색하여 모든 체크 박스를 선택 취소해도 모든 체크 박스를 선택 취소했다는 것을 확신 할 수는 없습니다.

OperatorNum (사용자의 질문에 따르면 아마도 Employee 또는 유사 함)을 정의한 것과 동일한 클래스의 IsChecked을 새 속성에 바인딩하는 것이 좋습니다. 이렇게하면 CheckBox를 선택 취소하기 위해 수행해야하는 작업은 소스 클래스에서 IsCheckedFalse으로 설정하는 것입니다.
또한 INotifyPropertyChanged

예 XAML

<CheckBox Grid.Column="0" 
      Name="CheckBoxZone" 
      Content="{Binding OperatorNum}" 
      Tag="{Binding TheValue}" 
      IsChecked="{Binding IsChecked}"/> 

직원

public class Employee : INotifyPropertyChanged 
{ 
    private bool m_isChecked; 
    public bool IsChecked 
    { 
     get { return m_isChecked; } 
     set 
     { 
      m_isChecked = value; 
      OnPropertyChanged("IsChecked"); 
     } 
    } 
    // Etc.. 

    public event PropertyChangedEventHandler PropertyChanged; 
    private void OnPropertyChanged(string propertyName) 
    { 
     if (PropertyChanged != null) 
     { 
      PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 
     } 
    } 
} 
관련 문제