2012-11-01 2 views
0

У меня есть DataGrid как таковой, добавленный в XML как код ниже. Теперь, как мне получить доступ к ComboBox с именем Combo1? Я не могу получить доступ к нему, используя имя Combo1. Я хочу, чтобы иметь возможность получить его значение, или изменить ItemsSource и т.д.Как получить доступ к ComboBox в Datagrid программно

<DataGrid x:Name="dgData" AutoGenerateColumns="False" Margin="133,94,23,116" Grid.Column="1" SelectionChanged="dgData_SelectionChanged"> 
     <DataGrid.Columns> 
      <DataGridTextColumn Binding="{Binding Subject}" Header="Subject" Width="*"/> 
      <DataGridTemplateColumn Header="Status" Width="100"> 
       <DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
         <ComboBox Name="Combo1" Height="22" ItemsSource="{StaticResource StatusList}" SelectedItem="{Binding Status}"/> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellTemplate> 
      </DataGridTemplateColumn> 
     </DataGrid.Columns> 
</DataGrid> 

ответ

0

Вы должны быть в состоянии найти то, что вам нужно здесь. Тем не менее, я скажу, что делать это не самый лучший из практики ...

http://blogs.msdn.com/b/wpfsdk/archive/2007/04/16/how-do-i-programmatically-interact-with-template-generated-elements-part-ii.aspx

private childItem FindVisualChild<childItem>(DependencyObject obj) 
    where childItem : DependencyObject 
{ 
    for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++) 
    { 
     DependencyObject child = VisualTreeHelper.GetChild(obj, i); 
     if (child != null && child is childItem) 
      return (childItem)child; 
     else 
     { 
      childItem childOfChild = FindVisualChild<childItem>(child); 
      if (childOfChild != null) 
       return childOfChild; 
     } 
    } 
    return null; 
} 
0

и может попытаться использовать что-то вроде этого:

public static IEnumerable<T> FindVisualChildren<T>(DependencyObject depObj) 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) 
      { 
       yield return (T)child; 
      } 

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

Но я рекомендую U подробнее о шаблоне MVVM.

Смежные вопросы