我已经定义了像这样的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,但我还没有找到解决方案。
这是什么原因以及如何解决这个问题?
答案 0 :(得分:0)
我尝试在后面的代码中执行相同的操作并且不起作用(使用DataGrid的ColumnWidth属性)。但是当我在后面的代码中更改每个单元格的宽度时,它就会起作用。
我这样做:
foreach (DataGridColumn dgc in DataTable.Columns)
{
dgc.Width = //The DependencyProperty
}