Передача ячеистых событий в команду в MVVM - PullRequest
0 голосов
/ 06 февраля 2019

Я не могу передать "DataGridCellEditEventArgs e" через мою команду в MVVM, в моем проекте без MVVM я использовал это, чтобы получить измененное значение.Поэтому я хочу передать аргументы, но что бы я ни делал, он говорит, что это ноль.Я застрял на этом в течение нескольких дней, я пробовал так много вещей.Я просто не могу передать измененное значение.

т.е. означает: xmlns: ie = "clr-namespace: System.Windows.Interactivity; сборка = System.Windows.Interactivity"

Коддля командного класса

namespace SgvConfiguratorMVVM.Tools
{
    public class EditCommand<T> : ICommand
    {
        public event EventHandler CanExecuteChanged;
        private Action<T> _action;

        public EditCommand(Action<T> action)
        {
            _action = action;
        }
        public bool CanExecute(object parameter) { return true; }

        public void Execute(object parameter)
        {
            if(_action != null)
            {
                var castParameter = (T)Convert.ChangeType(parameter,
                         typeof(T));
                _action(castParameter);
            }
        }
    }
}

Код от xaml

   <DataGrid Name="OrderGrid"
              Width="250"
              IsReadOnly="False"
              AutoGenerateColumns="False"                          
              SelectionMode="Single"                          
              RowHeight="45"                          
              FontSize="10"    
              Margin="10 10 0 0"
              ItemsSource="{Binding OrderList}"  
              SelectedItem="{Binding SelectedOrder}"
              CanUserAddRows="False"                          
              CanUserDeleteRows="False">
    <ie:Interaction.Triggers>
        <ie:EventTrigger EventName="CellEditEnding">
            <ie:InvokeCommandAction Command="{Binding OG_CellEditEndingCommand}"/>                                          
        </ie:EventTrigger>
    </ie:Interaction.Triggers>
    <DataGrid.Columns>
        <DataGridTextColumn Binding="{Binding MaxOrders}" Header="MaxOrders"/>
        <DataGridTextColumn Binding="{Binding MaxAssigned}" Header="MaxAssigned"/>
        <DataGridTextColumn Binding="{Binding AvailableForOrders}" Header="AvailableForOrders"/>
    </DataGrid.Columns>
</DataGrid>

Код от модели представления

 private void UpdateCells(object e)
        {
            var test = e;
            // always null
        }

        public ShowOperationsViewModel(string locationname)
        {            
            this.OG_CellEditEndingCommand = new EditCommand<object>(e => UpdateCells(e));
        }
...