0

UserControl의 XAML에서 표 레이아웃으로 확인란을 선언했습니다.UserControl에서 모든 확인란을 가져옵니다. - WP8

<CheckBox Content="Boo" Grid.Column="0" Grid.Row="0"/> 
<CheckBox Content="Hoo" Grid.Column="0" Grid.Row="1"/> 

나는이 모든 확인란을 C#에서 반복하고 싶습니다. 어떻게하면됩니까?

감사합니다.

+0

[이에 대한 답변 질문] (http://stackoverflow.com/questions/10279092/how-to-get-children-of-a-wpf-container-by-type) 도움이 될 수 있습니다. – allonym

답변

2

프로그래밍 방식으로 액세스해야 할 필요는 없습니다. ViewModel을 사용하고 속성을 체크 박스에 바인딩해야합니다.

<CheckBox IsChecked="{Binding IsCheckBoxOneChecked}" Content="Boo" Grid.Column="0" Grid.Row="0"/> 
<CheckBox Content="Hoo" Grid.Column="0" Grid.Row="1"/> 


public class SomeViewModel : INotifyPropertyChanged 
{ 
    private bool isCheckBoxOneChecked; 

    public bool IsCheckBoxOneChecked 
    { 
     get { return isCheckBoxOneChecked; } 
     set 
     { 
      if (value.Equals(isCheckBoxOneChecked)) 
      { 
       return; 
      } 

      isCheckBoxOneChecked = value; 
      OnPropertyChanged(); 
     } 
    } 

    public event PropertyChangedEventHandler PropertyChanged; 

    [NotifyPropertyChangedInvocator] 
    protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) 
    { 
     var handler = PropertyChanged; 

     if (handler != null) 
     { 
      handler(this, new PropertyChangedEventArgs(propertyName)); 
     } 
    } 
} 
은 또한이 같은 DataContext을 설정해야합니다 : XAML을 통해 수도

this.DataContext = new SomeViewModel(); 

합니다.

그러면 IsCheckBoxOneChecked 속성을 true로 설정하면 확인란이 자동으로 선택됩니다. 사용자가 확인란의 선택을 취소하면 속성도 false로 설정되고 반대의 경우도 마찬가지입니다.


여기를보세요 : Model-View-ViewModel (MVVM) Explained


을 그럼에도 불구하고, 당신이 당신의 Grid 당신이 반복 할 수있는 모든 아이들의 Name 속성을 설정하는 경우 :

// Grid is named 'MyGrid' 
foreach (var child in this.MyGrid.Children) 
{ 
    if (child is CheckBox) 
    { 
     var checkBox = child as CheckBox; 

     // Do awesome stuff with the checkbox 
    } 
}