大菜比陈志成 2020-05-14 09:51 采纳率: 100%
浏览 739
已采纳

C# System.InvalidOperationException:“双向绑定需要 Path 或 XPath。

图片说明

//System.InvalidOperationException:“双向绑定需要 Path 或 XPath。”
//在按下界面的datagrid控件时触发绑定的列内容,然后出现此异常
//没有用到SQL数据库,单纯以文本的形式拖拽
//目前参考微软官网WPF发现有动态绑定的信息ObservableCollection
//找到一处感觉会有效的文章 Addr:https://www.cnblogs.com/lonelyxmas/p/3510551.html
//整理一下,问题解决了
//第一步使用datagrid的CellEditEnding控件和BeginningEdit控件,出处:https://docs.microsoft.com/zh-cn/dotnet/api/system.windows.controls.datagrid.celleditending?view=netcore-3.1

XAML: <DataGrid Height="86" VerticalAlignment="Top" Width="628" ItemsSource="{Binding DishMenus}" AutoGenerateColumns="False"  GridLinesVisibility="None"  Grid.Row="1" CellEditEnding="dataGrid_CellEditEnding" BeginningEdit="dataGrid_BeginningEdit">

//第二步在cs文件下添加事件

XAML.cs:
        private void dataGrid_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
        {
            set_Form_.CellEditEnding((e.EditingElement as System.Windows.Controls.TextBox).Text);
        }
        private void dataGrid_BeginningEdit(object sender, DataGridBeginningEditEventArgs e)
        {
            set_Form_.BeginningEdit((e.Column.GetCellContent(e.Row) as TextBlock).Text);
        }

//第三步在 ViewModel层去处理这些事件

static string  sTrDataGrid = "";
        public void BeginningEdit(string select)
        {
            //将修改前的值保存起来
            preValue = select;
        }

        public void CellEditEnding(string select)
        {
            string newValue = select;

            if (sTrDataGrid != newValue)
            {
                Data_Service xds = new Data_Service();
                List<Name_DataGrid> dishList = xds.getAllNames();
                foreach (Name_DataGrid d in dishList)
                {
                   if (d.Name == preValue)
                    {
                        var model = dishList.Where(c => c.Name == d.Name).FirstOrDefault();
                        model.Name = newValue;
                        xds.setAllName(dishList);
                    }
                }

            }
        }

//结束,只要肯变强,就不会成为被饿死的徒弟。

  • 写回答

1条回答 默认 最新

  • threenewbee 2020-05-14 10:12
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 STM32 INMP441无法读取数据
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境