2015-07-14 4 views
1

У меня есть DataGrid, и я пытаюсь получить информацию о ячейке (столбец, строку и значение) выбранной ячейки с помощью MVVM и не вносить никаких изменений в код позади.DataGrid Single Cell строка и столбец из клика с использованием MVVM

Моя сетка данных выглядит следующим образом

<DataGrid x:Name="MyDataGrid" IsSynchronizedWithCurrentItem="True" ItemsSource="{Binding Path=MyData}" AutoGenerateColumns="False" IsReadOnly="True" GridLinesVisibility="None" SelectionUnit="Cell"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="a" Width="130" Binding="{Binding Path=A}"/> 
     <DataGridTextColumn Header="b" Width="100" Binding="{Binding Path=B}"/> 
     <DataGridTextColumn Header="c" Width="100" Binding="{Binding Path=C}"/> 
    </DataGrid.Columns> 
    <DataGrid.InputBindings> 
     <MouseBinding Gesture="LeftClick" Command="{Binding DataGridLeftClick}" CommandParameter="{Binding ElementName=MyDataGrid, Path=SelectedCells}" /> 
    </DataGrid.InputBindings> 

в моем ViewModel у меня есть

DataGridLeftClick = new RelayCommand(LeftClick); 
    ... 

    public ICommand DataGridLeftClick { get; private set; } 

    public void LeftClick(object obj) 
    { 
     log.Info(obj); 
    } 

работает команда, но есть две вещи, значение OBJ всегда нуль. Если я удалю SelectionUnit сетки (так что я предполагаю, что по умолчанию это значение FullRow), я получаю данные из полных ячеек строк. Как получить строку ячеек, индекс и значение одной ячейки, на которую было нажата кнопка?

Спасибо, Ник

ответ

1

Вы рассматривали DataGridView.CurrentCell собственности и с привязкой к VM {Binding CurrentCellVMProperty, Mode = OneWayToSource}.

Также см этот ответ: How to Bind CurrentCell in WPF datagrid using MVVM pattern

+0

Именно то, что я искал. Провел много времени в Интернете, но натолкнулся на это. Благодарю. –

+0

Рад помочь, приветствия. – Ahmad