Exemple #1
0
        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);
                }
            }
        }
Exemple #4
0
        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);
        }