Я не могу передать "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));
}