Wpf DataGrid列标题的双向数据绑定宽度

Wpf DataGrid列标题的双向数据绑定宽度,wpf,data-binding,datagrid,Wpf,Data Binding,Datagrid,我有一个树状视图,其中包含一些基于DataGrid的列标题。现在,我想将这些标题列的宽度绑定到TreeView中的列的宽度。下面是一个例子 <DataGrid> <DataGrid.Columns> <DataGridTextColumn Header="Name" Width="{Binding NameColumnWidth, Mode=TwoWay}" IsReadOnly="True"></DataGridTextColu

我有一个树状视图,其中包含一些基于DataGrid的列标题。现在,我想将这些标题列的宽度绑定到TreeView中的列的宽度。下面是一个例子

<DataGrid>
    <DataGrid.Columns>
        <DataGridTextColumn Header="Name" Width="{Binding NameColumnWidth, Mode=TwoWay}" IsReadOnly="True"></DataGridTextColumn>
        <DataGridTextColumn Header="Age" Width="{Binding AgeColumnWidth, Mode=TwoWay}" IsReadOnly="True"></DataGridTextColumn>
        <DataGridTextColumn Header="Address" Width="{Binding AddressColumnWidth, Mode=TwoWay}" IsReadOnly="True"></DataGridTextColumn>
    </DataGrid.Columns>
</DataGrid>

<TreeView ItemsSource="{Binding VisibleStudents}">
    <TreeView.ItemTemplate>
        <DataTemplate>
            <TreeViewItem ItemsSource="{Binding Path=Classes}">
                <TreeViewItem.Header>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="{Binding NameColumnWidth}"></ColumnDefinition>
                            <ColumnDefinition Width="{Binding AgeColumnWidth}"></ColumnDefinition>
                            <ColumnDefinition Width="{Binding AddressColumnWidth}"></ColumnDefinition>
                        </Grid.ColumnDefinitions>
                        <Border BorderThickness="1" BorderBrush="Black">
                            <TextBlock Text="{Binding Name}" />
                        </Border>

                        <Border BorderThickness="1" BorderBrush="Black">
                            <TextBlock Text="{Binding Age}" />
                        </Border>

                        <Border BorderThickness="1" BorderBrush="Black">
                            <TextBlock Text="{Binding Address}" />
                        </Border>
                    </Grid>
                </TreeViewItem.Header>
                <TreeViewItem.ItemTemplate>
                    <DataTemplate>
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="{Binding NameColumnWidth}"></ColumnDefinition>
                                <ColumnDefinition Width="{Binding AgeColumnWidth}"></ColumnDefinition>
                                <ColumnDefinition Width="{Binding AddressColumnWidth}"></ColumnDefinition>
                            </Grid.ColumnDefinitions>

                            <Border BorderThickness="1" BorderBrush="Black">
                                <TextBlock Text="{Binding Name}" />
                            </Border>

                            <Border BorderThickness="1" BorderBrush="Black">
                                <TextBlock Text="{Binding Age}" />
                            </Border>
                            <Border BorderThickness="1" BorderBrush="Black">
                                <TextBlock Text="{Binding Address}" />
                            </Border>
                        </Grid>
                    </DataTemplate>
                </TreeViewItem.ItemTemplate>
            </TreeViewItem>
        </DataTemplate>
    </TreeView.ItemTemplate>
</TreeView>

启动项目时,出现以下错误:

System.Windows.Data错误:2:找不到治理框架元素 或目标元素的FrameworkContentElement。 BindingExpression:Path=NameColumnWidth;DataItem=null;目标元素 是“DataGridTextColumn”(HashCode=38694667);目标属性为 “宽度”(类型“DataGridLength”)


datagrid的Itemsource未设置?不,我只是硬编码这些值,因为datagrid不需要数据,因为我只使用它来显示列。