Luk*_*101 1 c# wpf mvvm c#-4.0
我试图绑定datagrid列宽但不工作.
<DataGridTextColumn Binding="{Binding Name}" Width="{Binding GridNameWidth}" Header="Name" />
Run Code Online (Sandbox Code Playgroud)
这是后端代码:
public int GridNameWidth
{
get
{
return 300;
}
}
Run Code Online (Sandbox Code Playgroud)
永远不会触及后端代码.没有错误但该name字段具有默认宽度.我想将宽度绑定到我的属性.我不需要双向绑定只需要在网格加载时绑定宽度.这可能在wpf中吗?
DataGridTextColumn是一个抽象对象,实际上并不是VisualTree的一部分,因此它不会像使用其他控件那样使用继承的DataContext.
WPF知道如何Binding正确地解析类似属性的东西并将绑定传递给每个Cell,但是像Width这样的东西只是按原样进行评估,并且没有正确评估,因为DataContext和VisualTree都没有按预期存在.
常见的解决方案是使用静态数据源编写绑定.这是基于此答案的示例,它使用x:Reference来引用XAML标记中的另一个控件:
{Binding Source={x:Reference MyDataGrid}, Path=DataContext.NameColumnWidth}
Run Code Online (Sandbox Code Playgroud)
或者,您可以DataGridCellTemplate使用一个控件定义您自己的控件,该控件的宽度绑定到DataItem上的属性
| 归档时间: |
|
| 查看次数: |
2306 次 |
| 最近记录: |