2014-01-29 1 views
1

[OK] 이것은 여러 번 묻지 만 올바른 해결책을 찾을 수 없습니다. 나는 다음과 같이 정의 된 DataGrid를 가지고 있습니다.DataGrid 템플릿 열에서 확인란에 액세스하는 방법은 무엇입니까?

글쎄,이 템플릿 열은 관심의 대상이므로 여기에 추가되었습니다. 그래서 내가 관리하려고하는 것은 checkobx "cbxSingleRow"에 액세스하는 것입니다. 예를 들면 다음과 같이 모든 일반 작업을 수행 할 수 있습니다. cbxSingleRow.IsEnabled = false;

어떻게 체크 박스를받을 수 있습니까?

+0

"모든 일반 물건은"WPF의 데이터 바인딩을 통해 이루어집니다. 절차상의 코드가 아닙니다. –

+0

DataGrid 외부의 다른 확인란처럼 코드 숨김에서 해당 확인란에 액세스해야한다는 것을 알고 있습니다. 그 효과를 얻기위한 명확한 해결책이 있습니까? – Stojdza

+0

'Codebehind에서 해당 체크 박스에 액세스하면됩니다. '- 무엇 때문에? 무엇을 하든지간에 DataBinding을 통해 수행하십시오. –

답변

1

당신은 VisualTreeHelper 클래스의 도움으로 그것을 얻을 수 있습니다.

일부 유틸리티 클래스에서이 메서드를 이동하면 다시 사용할 수 있습니다.

public static IEnumerable<T> FindVisualChildren<T>(DependencyObject depObj, 
             string name) where T : DependencyObject 
{ 
    if (depObj != null) 
    { 
     for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++) 
     { 
      DependencyObject child = VisualTreeHelper.GetChild(depObj, i); 
      if (child != null && child is T && 
       (child as FrameworkElement).Name.Equals(name)) 
      { 
      yield return (T)child; 
      } 

      foreach (T childOfChild in FindVisualChildren<T>(child, name)) 
      { 
      yield return childOfChild; 
      } 
     } 
    } 
} 

사용법 :

foreach (CheckBox checkBox in UtilityFunctions. 
      FindVisualChildren<CheckBox>(InputDocItemsDataGrid, "cbxSingleRow")) 
{   
    checkBox.IsChecked = true; 
} 
관련 문제