简体   繁体   中英

Retrieve column name from a gridcontrol in mvvm design

Hi I am working on a WPF project in which I have a grid control . The itemsSource property of the grid control is bound to a datatable in my viewmodel. I am following the mvvm pattern, so my question is that I need to bind the selectedcell property of the grid control to a property in my view model class. Is it possible to determine the name of the column in which the cell resides by binding it to a property in the view model class. I know an event handler can be attached to the cell which would call a function in the code behind the view, but I dont wish to follow that approach since it would not be mvvm. Kindly help me with any suggestions.

In your XAML bind the CurrentCell property to a DataGridCellInfo in your View Model:

<DataGrid SelectionUnit="Cell"
          SelectionMode="Single"
          ItemsSource="{Binding MyDataTable}"
          CurrentCell="{Binding SelectedCellInfo, Mode=OneWayToSource}"/>

Then in your View Model you can access the header from the bound object:

public DataGridCellInfo SelectedCellInfo
{
    get { return _selectedCellInfo; }
    set
    {
        _selectedCellInfo = value;
        OnPropertyChanged("SelectedCellInfo");
        _columnName = _selectedCellInfo.Column.Header;
    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM