2010-10-25 36 views
0

我有一個包含2列的wpf數據網格(ProductID和Description)。 ProductID列是一個組合框,Description是一個文本框。在ProductID的SelectionChanged事件上,我想爲Description列指定一個值。我需要知道如何將值分配給說明文本框中用於觸發SelectionChanged事件的組合框的行。有人可以提供一個示例代碼嗎?這看起來很簡單,但我找不到答案。由於如何爲wpf數據網格單元賦值

回答

0

一個更好的辦法來做到這一點是通過使用綁定的屬性,如

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

要添加你能做到這一點ComboBox控件的SelectionChanged事件的事件處理程序,但我不會推薦它。

<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

謝謝!這將工作。如果我在DataGrid中有一個不綁定到Class對象的TextBox?它只是爲了顯示目的,我想顯示一個值。 – Seecott 2010-10-29 17:01:36

0

使用數據綁定,有一個結構類似,

庫存: 的ObservableCollection的ProductID 字符串描述

綁定的ObservableCollection您的數據網格。在您的ViewModel句柄中,ProductID的屬性發生更改,然後根據需要更新描述。

您應該閱讀有關MVVM模式的信息,請參閱http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

相關問題