Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从Datagrid文本框读取数据_C#_Wpf - Fatal编程技术网

C# 从Datagrid文本框读取数据

C# 从Datagrid文本框读取数据,c#,wpf,C#,Wpf,我有一个Datagrid,其中有3列,两列的值从数据库中获取并填充,而第三列是一个文本框,用户在其中输入值。我必须将该值保存到数据库中。我在这里面临一些问题。 当我在UI中输入值时,它在后台代码中显示为null。我做错了什么 <DataGrid AutoGenerateColumns="False" Height="233" Name="dataGrid1" Width="360" > <DataGrid.Columns> <DataGri

我有一个Datagrid,其中有3列,两列的值从数据库中获取并填充,而第三列是一个文本框,用户在其中输入值。我必须将该值保存到数据库中。我在这里面临一些问题。 当我在UI中输入值时,它在后台代码中显示为null。我做错了什么

   <DataGrid AutoGenerateColumns="False" Height="233" Name="dataGrid1" Width="360" > 
   <DataGrid.Columns>

     <DataGridTextColumn Header="x" Binding="{Binding Path=x}" Width="120" IsReadOnly="True" />
   <DataGridTextColumn Header="y" Binding="{Binding Path=y}" Width="120"  IsReadOnly="True"/>
    <DataGridTextColumn Header="Value/Ref" Width="120" Binding="{Binding Path=z, Mode=TwoWay}"  IsReadOnly="False" />

     </DataGrid.Columns>


我有一个包含变量x,y,z的类。我正在创建一个类列表,并尝试使用您的XAML代码和这个简单的代码片段将值添加到类中,其行为就像您想要的(我理解的):

A类
{
私有字符串x,y,z;
公共字符串x{get{return}set{{UEX=value;}}
公共字符串y{get{return{uy;}set{{uy=value;}}
公共字符串z{get{return}set{{UE z=value;}}
}
公共部分类主窗口:窗口
{
私有列表数据;
公共主窗口()
{
初始化组件();
myData=新列表();
添加(新的A(){x=“x1”,y=“y1”});
添加(新的A(){x=“x2”,y=“y2”});
添加(新的A(){x=“x3”,y=“y3”});
dataGrid1.ItemsSource=myData;
}
}

如果您在Value/Ref列中键入任何数据,后面的列表肯定会更新。

您是否尝试过
Binding=“{Binding Path=z,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}”
?是的,但它不起作用:(z属性上的setter被调用了吗?您能发布相关代码吗?包含x、y和z的对象看起来如何?Xvalue=((System.Data.DataRowView)(((DataGridRow)dataGrid1.ItemContainerGenerator.ContainerFromIndex(i)).Item)).Row.ItemArray[0].ToString();这就是我读取y和z的值的方式。x,y,z是添加到列表中的字符串。我仍然看不到公开x,y和z属性的对象的定义绑定到3列的IE?是类还是结构?使用该代码和其他相关内容更新您的问题
class A
    {
        private string _x, _y, _z;

        public string x { get { return _x; } set { _x = value; } }
        public string y { get { return _y; } set { _y = value; } }
        public string z { get { return _z; } set { _z = value; } }
    }

public partial class MainWindow : Window
    {
        private List<A> myData;

        public MainWindow()
        {
            InitializeComponent();

            myData = new List<A>();
            myData.Add(new A() { x = "x1", y = "y1" });
            myData.Add(new A() { x = "x2", y = "y2" });
            myData.Add(new A() { x = "x3", y = "y3" });

            dataGrid1.ItemsSource = myData;
        }
    }