2010-10-25 3 views
0

У меня есть datagrid wpf с 2 столбцами (ProductID и Description). Столбец ProductID - это combobox, а описание - текстовое поле. В событии SelectionChanged для ProductID я хочу присвоить значение столбцу Description. Мне нужно знать, как назначить значение текстовому полю Description для строки combobox, которая вызвала событие SelectionChanged. Может ли кто-нибудь предоставить образец кода? Это кажется таким простым, но я не могу найти ответа. БлагодарностиКак присвоить значение ячейке datagrid wpf

ответ

0

Лучший способ сделать это с помощью Binding к свойствам, как

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

Чтобы добавить EventHandler для события SelectionChanged в ComboBox вы могли бы сделать это, но я бы не рекомендовал его.

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

А в коде позади

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

Спасибо! Это сработает. Что делать, если у меня есть TextBox в DataGrid, который не связан с объектом класса? Это просто для отображения цели, и я хочу отобразить значение. – Seecott

0

Использование связывания данных, имеют структуру, как,

Inventory: ObservableCollection ProductID Строка Описание

Bind ObservableCollection к вашему DataGrid. В ViewModel обработайте свойство ProductID и измените его, как вы хотите.

Вы должны прочитать о шаблоне MVVM, см. http://msdn.microsoft.com/en-us/magazine/dd419663.aspx.

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