2016-01-12 1 views
0

Je travaille sur devexpress GridControl. J'ai la colonne à l'intérieur de EditTemplate de GridColumn. Comment puis-je obtenir la référence de Combobox en C#.Comment obtenir la référence du contrôle à l'intérieur de EditTemplate dans Devexpress GridControl

J'ai essayé avec EditTemplate.LoadContent(), mais cela me donne une nouvelle instance. Je veux la même instance, donc je peux changer quelques valeurs.

Toute aide est très appréciée.

<dxg:GridColumn.CellTemplate> 
      <DataTemplate> 
       <controls:ComboBox Name="PART_Editor" ItemsSource="{Binding RowData.Row.TransportModeTypes}" DisplayMember="Value" ValueMember="Key" Background="Transparent" ToolTip="Enter Transport Mode" /> 
      </DataTemplate> 
    </dxg:GridColumn.CellTemplate> 

Répondre

2

Vous pouvez toujours trouver vos ComboBox directement dans Visual Tree. Quelque chose comme ceci:

private IEnumerable<T> GetVisualChildren<T>(DependencyObject parent) where T : Visual 
    { 
     T child = default(T); 
     int numVisuals = VisualTreeHelper.GetChildrenCount(parent); 
     for (int i = 0; i < numVisuals; i++) 
     { 
      Visual v = (Visual)VisualTreeHelper.GetChild(parent, i); 
      child = v as T; 

      if (child == null) 
      { 
       foreach (var item in GetVisualChildren<T>(v)) 
       { 
        yield return item; 
       } 
      } 

      if (child != null) 
      { 
       yield return child; 
      } 
     } 

    } 

    private void Button_Click(object sender, RoutedEventArgs e) 
    { 
     GetVisualChildren<ComboBox>(dataGrid).ToList().ForEach(c => c.SelectedItem = null); 
    } 

Ou vous pouvez mettre en œuvre et associer un comportement:

public class MyComboBoxBehavior : Behavior<GridViewBase> 
{ 
    protected override void OnAttached() 
    { 
     base.OnAttached(); 
     GridControl gridControl = AssociatedObject.Grid; 

     // Logic for combobox handling goes here 
    } 
} 


<dxg:GridControl> 
     <dxg:GridControl.View> 
      <dxg:TableView> 
       <i:Interaction.Behaviors> 
        <local:MyComboBoxBehavior/> 
       </i:Interaction.Behaviors> 
      </dxg:TableView> 
     </dxg:GridControl.View> 
    </dxg:GridControl>