将列宽绑定到DataGrid的ColumnWidth属性只能在开头工作

时间:2012-02-06 12:00:09

标签: wpf binding datagrid

我已经定义了像这样的DataGrid

<WpfToolkit:DataGrid Grid.Column="1" Grid.ColumnSpan="2" Grid.Row="1" Grid.RowSpan="2" ItemsSource="{Binding Path=Data}"
                         HeadersVisibility="None" IsReadOnly="True" SelectionUnit="Cell"
                         RowHeight="{Binding RowHeight}" ColumnWidth="{Binding ElementName=ColumnAxis,Path=DataContext.RootItem.ItemWidth, Mode=TwoWay, Converter={StaticResource columnWidthConverter}}" 
                         x:Name="DataTable" 
                         >

重要的是绑定到ColumnWidth的部分。在代码的另一部分中,我更改了DependencyProperty“ItemWidth”。出于调试目的,我在ColumnWidthConverter的Convert方法中编写了以下代码:

Console.Out.WriteLine("Convert, ItemWidth:" + itemWidth);

当我现在启动应用程序时,转换方法仅在开始时调用,但在我从代码的其他部分更改DP时不再调用。此外,开头的宽度不是从DataGrid中获取的,而是正确设置为auto或其他东西(宽度与最长条目的长度完全一样)。

我也尝试使用UpdateSourceTrigger,但我还没有找到解决方案。

这是什么原因以及如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我尝试在后面的代码中执行相同的操作并且不起作用(使用DataGrid的ColumnWidth属性)。但是当我在后面的代码中更改每个单元格的宽度时,它就会起作用。

我这样做:

foreach (DataGridColumn dgc in DataTable.Columns)
{
    dgc.Width = //The DependencyProperty
}