如何为wpf datagrid单元格赋值

如何为wpf datagrid单元格赋值,wpf,datagrid,Wpf,Datagrid,我有一个wpf数据网格,有两列(ProductID和Description)。ProductID列是一个组合框,说明是一个文本框。在ProductID的SelectionChanged事件中,我想为Description列指定一个值。我需要知道如何为触发SelectionChanged事件的combobox行的Description文本框赋值。有人能提供一个示例代码吗?这似乎很简单,但我找不到答案。感谢使用数据绑定,具有如下结构: 库存: 可观察收集产品ID 字符串描述 将ObservableC

我有一个wpf数据网格,有两列(ProductID和Description)。ProductID列是一个组合框,说明是一个文本框。在ProductID的SelectionChanged事件中,我想为Description列指定一个值。我需要知道如何为触发SelectionChanged事件的combobox行的Description文本框赋值。有人能提供一个示例代码吗?这似乎很简单,但我找不到答案。感谢使用数据绑定,具有如下结构:

库存: 可观察收集产品ID 字符串描述

将ObservableCollection绑定到数据网格。在ViewModel中,处理ProductID的属性已更改,然后根据需要更新描述


您应该阅读有关MVVM模式的内容,请参阅

更好的方法是使用对属性的绑定,如

private ProductIdEnum m_productId;
public ProductIdEnum ProductId
{
    get
    {
        return m_productId;
    }
    set
    {
        m_productId = value;
        // Value changed...
    }
}
要为组合框的SelectionChanged事件添加EventHandler,您可以这样做,但我不推荐这样做

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

谢谢!这会奏效的。如果DataGrid中有一个未绑定到类对象的文本框,该怎么办?它只是为了显示目的,我想显示一个值。
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
}