Как присвоить значение ячейке таблицы данных wpf - PullRequest
0 голосов
/ 26 октября 2010

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

Ответы [ 2 ]

0 голосов
/ 26 октября 2010

Лучший способ сделать это - использовать привязку к таким свойствам, как

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 голосов
/ 26 октября 2010

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

Инвентаризация: ObservableCollection ProductID Строка Описание

Привязать ObservableCollection к вашей сетке данных.В дескрипторе ViewModel изменилось свойство ProductID, а затем обновите описание по своему усмотрению.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...