WPF中DataGrid绑定数据可以使用struct结构体吗


前台界面的代码:


 <DataGrid x:Name="dgEmp"
                  Margin="149,97,115,159"
                  AutoGenerateColumns="False"
                  ItemsSource="{Binding }">
            <DataGrid.Columns>
                <DataGridTextColumn Width="60"
                                    Binding="{Binding Id}"
                                    Header="员工编号" />
                <DataGridTextColumn Width="80"
                                    Binding="{Binding Name}"
                                    Header="姓名" />
                <DataGridTextColumn Width=" 80"
                                    Binding="{Binding Phone}"
                                    Header="联系电话" />
                <DataGridTextColumn Width="120"
                                    Binding="{Binding Mail}"
                                    Header="邮箱" />
                <DataGridTextColumn Width="180" Header="备注" />
            </DataGrid.Columns>
        </DataGrid>

有一个Entity员工的实体类,在此不缀代码了。
我现在先申明一个结构体:


 public struct EmpStruct
{
    public int _id;
    public string _name;
    public string _address;
    public string _phone;
    public string _mail;
}

在页面加载时读取数据库信息,


 private void ContactPage_Loaded(object sender, RoutedEventArgs e)
        {

            DBConn dc = new DBConn();
            //查询员工的员工编号、员工姓名、员工电话、员工邮箱
            string contactSql = "SELECT Emp_id,Emp_name,Emp_address,Emp_phone,Emp_mail FROM my_emp";
            MySqlDataReader msdr = dc.GetComand(contactSql);

            //List<EmpStruct> list = new List<EmpStruct>();

            while (msdr.Read())
            {

                EmpStruct empStruct = new EmpStruct();
                empStruct._id = (int)msdr["Emp_id"];
                empStruct._name = msdr["Emp_name"].ToString();
                empStruct._address = msdr["Emp_address"].ToString();
                empStruct._phone = msdr["Emp_phone"].ToString();
                empStruct._mail = msdr["Emp_mail"].ToString();
                list.Add(empStruct);
            }
            dgEmp.DataContext = list;
        }

我想知道怎么才能实现在前台的数据绑定,使得struct中的数据显示到DataGrid中去。

才开始学习WPF,希望高手指路。如果能实现请详细说说,必要时附上代码及说明,如果不能实现请讲述理由

非常感谢。

struct WPF datagrid

木碎成屑。 9 years, 8 months ago

WPF双向绑定不支持字段 只支持属性 INotifyPropertyChanged

struct是按值传递 所以绑定后修改字段不会更新view



 public class EmpStruct
{
    public int id { get; set; }
    ...
}

<DataGridTextColumn Width="60" Binding="{Binding id}" Header="员工编号" />

无良MOA answered 9 years, 8 months ago

Your Answer