gpt4 book ai didi

c# - 如何在 WPF (MVVM) 中绑定(bind)数据网格列宽

转载 作者:太空宇宙 更新时间:2023-11-03 19:59:09 25 4
gpt4 key购买 nike

我正在尝试绑定(bind)数据网格列的宽度但不起作用。

<DataGridTextColumn Binding="{Binding Name}" Width="{Binding GridNameWidth}" Header="Name" />

后台代码如下:

public int GridNameWidth
{
get
{
return 300;
}
}

后端代码从未被触及。没有错误,但 name 字段有默认宽度。我想让宽度绑定(bind)到我的属性。我不需要双向绑定(bind),只需要在加载网格时绑定(bind)宽度。这在 wpf 中可能吗?

最佳答案

DataGridTextColumn 是一个抽象对象,实际上不是 VisualTree 的一部分,因此它不会像您对其他控件所期望的那样使用继承的 DataContext。

WPF 知道如何正确解析诸如 Binding 属性之类的东西并将绑定(bind)传输到每个 Cell,但是诸如 Width 之类的东西只是按原样计算,并且无法正确计算,因为 DataContext 和VisualTree 按预期出现。

一个常见的解决方案是改用静态数据源编写绑定(bind)。这是一个基于 this answer 的示例,它使用 x:Reference从 XAML 标记引用另一个控件:

{Binding Source={x:Reference MyDataGrid}, Path=DataContext.NameColumnWidth}

或者,您可以定义您自己的 DataGridCellTemplate 控件,该控件的宽度绑定(bind)到您的 DataItem 上的任何属性

关于c# - 如何在 WPF (MVVM) 中绑定(bind)数据网格列宽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30241116/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com