private void OnDataGridItemChanged(DataGridItemChangedEventArgs eventArgs) { if (eventArgs.IsChanged == false) { return; } if (eventArgs.NewItem is LotteryDto newItem && eventArgs.OldItem is LotteryDto oldItem) { _ = _lotteryService.UpdateAsync(newItem); } }
private void OnDataGridItemChanged(DataGridItemChangedEventArgs eventArgs) { if (eventArgs.IsChanged == false) { return; } if (eventArgs.NewItem is CityPositionDto newItem && eventArgs.OldItem is CityPositionDto oldItem) { if (CityPositions.FirstOrDefault(p => p.TeleCmd == newItem.TeleCmd && object.Equals(p, newItem) == false) != null) { _dialogService.ShowInformation("传送命令重复"); newItem.TeleCmd = oldItem.TeleCmd;// 此时新值还未更新至ui } else { _ = _cityPositionService.UpdateAsync(newItem); } } }
private void OnDataGridItemChanged(DataGridItemChangedEventArgs eventArgs) { if (eventArgs.IsChanged == false) { return; } if (eventArgs.NewItem is HomePositionDto newItem && eventArgs.OldItem is HomePositionDto oldItem) { if (newItem.SteamID != oldItem.SteamID) { _dialogService.ShowInformation("无法更改SteamID"); newItem.SteamID = oldItem.SteamID;// 此时新值还未更新至ui } else { _ = _homePositionService.UpdateAsync(newItem); } } }
private void OnDataGridItemChanged(DataGridItemChangedEventArgs eventArgs) { if (eventArgs.IsChanged == false) { return; } if (eventArgs.NewItem is GoodsDto newItem && eventArgs.OldItem is GoodsDto oldItem) { if (GoodsItems.FirstOrDefault(p => p.BuyCmd == newItem.BuyCmd && object.Equals(p, newItem) == false) != null) { _dialogService.ShowInformation("购买命令重复"); newItem.BuyCmd = oldItem.BuyCmd;// 此时新值还未更新至ui } else { _ = _goodsService.UpdateAsync(newItem); } } }
public object Convert(object value, object parameter) { DataGridItemChangedEventArgs itemChangedEventArgs = new DataGridItemChangedEventArgs(); DataGridCellEditEndingEventArgs args = (DataGridCellEditEndingEventArgs)value; Type itemType = args.Row.Item.GetType(); if (args.Column is DataGridBoundColumn dataGridBoundColumn) { Binding binding = dataGridBoundColumn.Binding as Binding; string propertyName = binding.Path.Path; itemChangedEventArgs.BindPath = propertyName; PropertyInfo propertyInfo = itemType.GetProperty(propertyName); itemChangedEventArgs.OldItem = ObjectClone.CopyProperties(args.Row.Item, itemType); BindingExpression bindingExpression = args.EditingElement.GetBindingExpression(TextBox.TextProperty); bindingExpression.UpdateSource(); itemChangedEventArgs.NewItem = args.Row.Item; itemChangedEventArgs.IsChanged = !object.Equals(propertyInfo.GetValue(itemChangedEventArgs.OldItem), propertyInfo.GetValue(itemChangedEventArgs.NewItem)); } #region Old //Type itemType = args.Row.Item.GetType(); //itemChangedEventArgs.IsNewItem = args.Row.IsNewItem; //if (itemChangedEventArgs.IsNewItem == false) //{ // itemChangedEventArgs.OldItem = ObjectClone.CopyProperties(args.Row.Item, itemType); //} //if (args.Column is DataGridBoundColumn dataGridBoundColumn) //{ // Binding binding = dataGridBoundColumn.Binding as Binding; // string propertyName = binding.Path.Path; // PropertyInfo propertyInfo = itemType.GetProperty(propertyName); // BindingExpression bindingExpression = args.EditingElement.GetBindingExpression(TextBox.TextProperty); // bindingExpression.UpdateSource(); // itemChangedEventArgs.NewItem = args.Row.Item; // if (itemChangedEventArgs.IsNewItem) // { // itemChangedEventArgs.IsChanged = true; // } // else // { // itemChangedEventArgs.IsChanged = !object.Equals(propertyInfo.GetValue(itemChangedEventArgs.OldItem), // propertyInfo.GetValue(itemChangedEventArgs.NewItem)); // } //} #endregion #region Old //if (args.EditingElement is TextBox textBox) //{ //if (string.IsNullOrEmpty(textBox.Text) == false) //{ // Type itemType = itemChangedEventArgs.OldItem.GetType(); // PropertyInfo propertyInfo = itemType.GetProperty(propertyName); // Type metaType = propertyInfo.PropertyType; // if (metaType.IsGenericType && metaType.GetGenericTypeDefinition() == typeof(Nullable<>)) // { // metaType = propertyInfo.PropertyType.GetGenericArguments()[0]; // } // try // { // object _value = System.Convert.ChangeType(textBox.Text, metaType); // itemChangedEventArgs.NewItem = ObjectClone.CopyProperties(itemType, itemChangedEventArgs.OldItem); // propertyInfo.SetValue(itemChangedEventArgs.NewItem, _value); // } // catch (Exception) // { // ApplicationCommands.Undo.Execute(null, textBox); // //Log.Error("DataGridCellEditEndingEventArgs转换失败", e); // } //} //} #endregion return(itemChangedEventArgs); }