Wpf 将列宽绑定到DataGrid的ColumnWidth属性只在开始时起作用

Wpf 将列宽绑定到DataGrid的ColumnWidth属性只在开始时起作用,wpf,binding,datagrid,Wpf,Binding,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"

我定义了这样一个数据网格

<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" 
                         >
当我现在启动应用程序时,Convert方法只在开始时被调用,但当我从代码的另一部分更改DP时不再被调用。此外,开头的宽度不是从DataGrid获取的,而是正确地设置为auto或其他值(宽度正好与最长的条目一样长)

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


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

我尝试在代码隐藏中执行相同的操作,但没有成功(使用DataGrid的ColumnWidth属性)。但是当我改变代码隐藏中每个单元格的宽度时,它就工作了

我是这样做的:

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

“更改代码其他部分的DP”是什么意思。ItemWidth是依赖属性吗?是的。我从代码的另一部分更改了此DP(DependencyProperty)。在调试器中运行应用程序并更改ItemWidth时,是否在Visual Studio的输出窗口中检查了任何绑定错误消息?是的,我检查了。不幸的是,没有任何=),那么我就知道prpblem在哪里了。而且您100%确定您在其上设置ItemWidth的对象与绑定引用的对象相同,即名为
ColumnAxis
的元素的
DataContext.RootItem
?或者RootItem或者甚至是
DataContext
是否可能发生了某种变化?这里有点猜测,因为绑定本身看起来不错,而且您还没有发布任何其他代码。
foreach (DataGridColumn dgc in DataTable.Columns)
{
    dgc.Width = //The DependencyProperty
}