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,希望高手指路。如果能实现请详细说说,必要时附上代码及说明,如果不能实现请讲述理由

非常感谢。

阅读 7.1k
1 个回答

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

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


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

<DataGridTextColumn Width="60" Binding="{Binding id}" Header="员工编号" />
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进