2010-10-25 8 views
0

J'ai une constante de données wpf avec 2 colonnes (ProductID et Description). La colonne ProductID est une zone de liste déroulante et la description est une zone de texte. Dans l'événement SelectionChanged du ProductID, je veux attribuer une valeur à la colonne Description. J'ai besoin de savoir comment affecter la valeur à la zone de texte Description pour la ligne de la liste déroulante qui a déclenché l'événement SelectionChanged. Quelqu'un peut-il s'il vous plaît fournir un exemple de code? Cela semble si simple mais je ne trouve pas de réponse. MerciComment affecter une valeur à la cellule de la cellule de données wpf

Répondre

0

Une meilleure façon de le faire est à l'aide de reliure aux propriétés comme

private ProductIdEnum m_productId; 
public ProductIdEnum ProductId 
{ 
    get 
    { 
     return m_productId; 
    } 
    set 
    { 
     m_productId = value; 
     // Value changed... 
    } 
} 

Pour ajouter un gestionnaire d'événements pour l'événement SelectionChanged du ComboBox, vous pouvez le faire, mais je ne le recommanderais pas.

<DataGridComboBoxColumn Header="ProductID" 
         ..."> 
    <DataGridComboBoxColumn.EditingElementStyle> 
     <Style TargetType="{x:Type ComboBox}"> 
      <EventSetter Event="SelectionChanged" Handler="ProductIdChanged" /> 
     </Style> 
    </DataGridComboBoxColumn.EditingElementStyle> 
</DataGridComboBoxColumn> 

Et dans le code derrière

public T GetVisualParent<T>(object childObject) where T : Visual 
{ 
    DependencyObject child = childObject as DependencyObject; 
    while ((child != null) && !(child is T)) 
    { 
     child = VisualTreeHelper.GetParent(child); 
    } 
    return child as T; 
} 

void ProductIdChanged(object sender, SelectionChangedEventArgs e) 
{ 
    ComboBox comboBox = sender as ComboBox; 
    DataGridRow dataGridRow = GetVisualParent<DataGridRow>(comboBox); 
    SomeClass myClass = dataGridRow.Item as SomeClass; 
    // Set description 
} 
+0

Merci! Cela fonctionnera. Que faire si j'ai un TextBox dans DataGrid qui n'est pas lié à un objet Class? C'est simplement là pour montrer le but et je veux afficher une valeur. – Seecott

0

utilisation de liaison de données, ont une structure similaire,

Inventaire: ObservableCollection ProductID Chaîne Description

Bind ObservableCollection à votre DataGrid. Dans votre handle ViewModel, la propriété ProductID a changé et ensuite mettre à jour la description comme vous le souhaitez.

Vous devriez lire à propos du modèle MVVM, voir http://msdn.microsoft.com/en-us/magazine/dd419663.aspx.

Questions connexes