【发布时间】:2018-02-14 11:56:00
【问题描述】:
我是 WPF 新手,但我有一些开发方面的经验。我已经尝试了很多选择来让它工作,但我很难过......
我想要一个包含两列的简单 DataGrid; “名称”和“计数”。
我希望“名称”的宽度为 *(剩余可用),“计数”的宽度为 50,锁定在右边缘。
我希望这个 DataGrid 控件所在的 Grid 单元格可以调整大小(DataGrid 的水平对齐和垂直对齐都设置为“拉伸”)。在调整网格单元格大小时,我希望左侧的“名称”列扩展或收缩以填充右侧 50 宽的“计数”列留下的可用空间。
DataGrid 通过 ItemSource 填充自定义 SortableBindingList
如果我尝试在 XAML (
我已经尝试过 XAML 中的资源、样式和模板(在此处找到类似问题的各种答案和示例,codeproject 和 MSDN)并在代码中明确设置值。
我得到的最接近的是在加载 DataGrid 时在代码中设置:
MyDataGrid.Loaded += (s, o) =>
{
if (MyDataGrid.Columns.Count() == 2)
{
MyDataGrid.Columns[0].Width = new DataGridLength(1,DataGridLengthUnitType.Star);
MyDataGrid.Columns[1].Width = 50;
}
};
在这种情况下,我将左侧调整大小的“名称”列和右侧的“计数”列锁定并固定,但我也在两列之间获得了 50 像素的空间(幻影第 3 列?我不知道那个是从哪里来的!)。
如果我在 XAML 中设置标头和数据,这非常容易,但当然,数据是动态的并且通过 ItemSource 设置,所以在这种情况下不是一个选项。还是不知何故?
这把我逼疯了!有什么想法吗?
【问题讨论】:
-
不确定您的真正问题是什么。但是我感觉你没有设置
AutoGenerateColumns = false。否则,您将获得两倍于您拥有属性的列数。 -
我觉得自己像个白痴,但仅此而已。谢谢!