如何为wpf datagrid单元格赋值
我有一个wpf数据网格,有两列(ProductID和Description)。ProductID列是一个组合框,说明是一个文本框。在ProductID的SelectionChanged事件中,我想为Description列指定一个值。我需要知道如何为触发SelectionChanged事件的combobox行的Description文本框赋值。有人能提供一个示例代码吗?这似乎很简单,但我找不到答案。感谢使用数据绑定,具有如下结构: 库存: 可观察收集产品ID 字符串描述 将ObservableCollection绑定到数据网格。在ViewModel中,处理ProductID的属性已更改,然后根据需要更新描述如何为wpf datagrid单元格赋值,wpf,datagrid,Wpf,Datagrid,我有一个wpf数据网格,有两列(ProductID和Description)。ProductID列是一个组合框,说明是一个文本框。在ProductID的SelectionChanged事件中,我想为Description列指定一个值。我需要知道如何为触发SelectionChanged事件的combobox行的Description文本框赋值。有人能提供一个示例代码吗?这似乎很简单,但我找不到答案。感谢使用数据绑定,具有如下结构: 库存: 可观察收集产品ID 字符串描述 将ObservableC
您应该阅读有关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
}