我有一个包含2列的wpf数据网格(ProductID和Description)。 ProductID列是组合框,Description是文本框。在ProductID的SelectionChanged事件上,我想为Description列分配一个值。我需要知道如何将值分配给触发SelectionChanged事件的组合框的行的描述文本框。有人可以提供示例代码吗?这似乎很简单,但我找不到答案。感谢
答案 0 :(得分:0)
使用数据绑定,具有类似
的结构库存: ObservableCollection ProductID 字符串描述
将ObservableCollection绑定到您的数据网格。在ViewModel句柄中,ProductID的属性已更改,然后根据需要更新说明。
您应该阅读有关MVVM模式的内容,请参阅http://msdn.microsoft.com/en-us/magazine/dd419663.aspx。
答案 1 :(得分:0)
更好的方法是使用Binding to Properties,如
private ProductIdEnum m_productId;
public ProductIdEnum ProductId
{
get
{
return m_productId;
}
set
{
m_productId = value;
// Value changed...
}
}
要为ComboBox的SelectionChanged事件添加EventHandler,您可以这样做,但我不推荐它。
<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
}