我试图绑定一个datagrid列的宽度,但不起作用。
<DataGridTextColumn Binding="{Binding Name}" Width="{Binding GridNameWidth}" Header="Name" />
这是后端代码:
public int GridNameWidth
{
get
{
return 300;
}
}
永远不会触碰到后端代码。没有错误,但name
字段具有默认宽度。我想使宽度绑定到我的财产。我不需要双向绑定,只需要在网格加载时绑定宽度即可。在wpf中这可能吗?
DataGridTextColumn是一个抽象对象,实际上不是VisualTree的一部分,因此它没有像其他控件那样使用继承的DataContext。
WPF知道如何Binding
正确解析诸如属性之类的内容,并将绑定转移到每个Cell,但是诸如Width之类的内容只是按原样进行评估,并且由于DataContext和VisualTree都不存在,因此评估不正确。
常见的解决方案是改为使用静态数据源编写绑定。这是基于此答案的示例,该示例使用x:Reference引用XAML标记中的另一个控件:
{Binding Source={x:Reference MyDataGrid}, Path=DataContext.NameColumnWidth}
或者,您可以DataGridCellTemplate
使用控件定义自己的控件,该控件的Width绑定到DataItem上的任何属性
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句