我有两个数据网格,每个网格一列。
第一的:

<DataGrid.Columns>
   <DataGridTextColumn x:Name="FilterTextCol01"
                       IsReadOnly="False"
                       Width="{Binding ElementName=TextCol01, Path=ActualWidth, Mode=TwoWay}" />
</DataGrid.Columns>

第二:
<DataGridTextColumn CellStyle="{StaticResource DataGridColumnContentLeft}"
                    local:DataGridUtil.Name="TextCol01"
                    x:Name="TextCol01"
                    Header="TextCol01"
                    SortMemberPath="TextCol01"
                    Binding="{Binding TextCol01}"
                    Width="Auto"
                    IsReadOnly="True"/>

第一列的宽度与第二列的宽度绑定(bind)不起作用。
如果我以这种方式在代码中进行操作:
FilterTextCol01.Width = TextCol01.ActualWidth;

有用。
谁能告诉我为什么第一种方法行不通?

最佳答案

因为DataGrid列是抽象对象,所以不会出现在窗口的逻辑或可视树中。您无法使用ElementName在其上绑定(bind)属性(这些绑定(bind)将不需要名称范围)。

您可以尝试改用Source x:Reference ,例如

{Binding Source={x:Reference TextCol01}, Path=ActualWidth}

09-13 05:38