Wpf RadGridView是否将列宽绑定到另一列?

Wpf RadGridView是否将列宽绑定到另一列?,wpf,user-interface,data-binding,telerik-grid,radgridview,Wpf,User Interface,Data Binding,Telerik Grid,Radgridview,我有一个RadGridView(Telerik),它有一些列。在行详细信息模板中,我有另一个网格视图,显示具有相同列的子项。这对于初始显示非常有用,但我希望详细信息模板的列宽遵循主网格的宽度(详细信息模板没有标题) 我试着给主列一个名称,并按名称绑定到该列的“宽度”和“实际宽度”属性,但它似乎没有接受,也没有给出任何绑定错误 有没有办法将一个RadGridView上的列宽度绑定到另一个RadGridView上的列宽度 编辑 根据下面的建议,我试着将视图绑定到标签,然后这样做,但似乎不起作用。它适

我有一个RadGridView(Telerik),它有一些列。在行详细信息模板中,我有另一个网格视图,显示具有相同列的子项。这对于初始显示非常有用,但我希望详细信息模板的列宽遵循主网格的宽度(详细信息模板没有标题)

我试着给主列一个名称,并按名称绑定到该列的“宽度”和“实际宽度”属性,但它似乎没有接受,也没有给出任何绑定错误

有没有办法将一个RadGridView上的列宽度绑定到另一个RadGridView上的列宽度

编辑

根据下面的建议,我试着将视图绑定到标签,然后这样做,但似乎不起作用。它适用于文本块,但不设置列宽。以下是我看到的视频:

以下是我正在使用的代码:

    <telerik:RadGridView Grid.Row="2" ItemsSource="{Binding RenumberNotes}" x:Name="tgr" AutoGenerateColumns="False"
                         RowDetailsVisibilityMode="Visible">
        <telerik:RadGridView.Columns>
            <telerik:GridViewDataColumn UniqueName="columnName" DataMemberBinding="{Binding CurrentValue}" Width="100" />
        </telerik:RadGridView.Columns>
        <telerik:RadGridView.RowStyle>
            <Style TargetType="telerik:GridViewRow" BasedOn="{StaticResource {x:Type telerik:GridViewRow}}">
                <Setter Property="Tag" Value="{Binding RelativeSource={RelativeSource AncestorType=telerik:RadGridView}}" />
            </Style>
        </telerik:RadGridView.RowStyle>
        <telerik:RadGridView.RowDetailsTemplate>
            <DataTemplate>
                <StackPanel>
                    <StackPanel Orientation="Horizontal" Margin="10,10,10,10">
                        <TextBlock Text="Column width: " />
                        <TextBlock
                            Text="{Binding Tag.Columns[columnName].ActualWidth, RelativeSource={RelativeSource AncestorType=telerik:GridViewRow}}" />
                    </StackPanel>
                    <telerik:RadGridView AutoGenerateColumns="False" ItemsSource="{Binding Subnotes}">
                        <telerik:RadGridView.Columns>
                            <telerik:GridViewColumn Header="test" Width="{Binding Tag.Columns[columnName].ActualWidth, RelativeSource={RelativeSource AncestorType=telerik:GridViewRow}}" />
                        </telerik:RadGridView.Columns>

                    </telerik:RadGridView>
                </StackPanel>
            </DataTemplate>
        </telerik:RadGridView.RowDetailsTemplate>
    </telerik:RadGridView>

如您所见,它正确地更新了textblock,因此绑定是正确的,但列宽没有更新

有没有办法将一个
RadGridView
上的列的宽度绑定到另一个
RadGridView
上的列的宽度

对。您可以定义一个
RowStyle
,它将
GridViewRow
标记
属性绑定到父
RadGridView
,然后使用这个绑定到网格的
集合。下面是一个例子:

<telerik:RadGridView x:Name="tgr" AutoGenerateColumns="False" RowDetailsVisibilityMode="VisibleWhenSelected">
    <telerik:RadGridView.Columns>
        <telerik:GridViewDataColumn UniqueName="columnName" DataMemberBinding="{Binding Name}" Width="100" />
    </telerik:RadGridView.Columns>
    <telerik:RadGridView.RowStyle>
        <Style TargetType="telerik:GridViewRow" BasedOn="{StaticResource {x:Type telerik:GridViewRow}}">
            <Setter Property="Tag" Value="{Binding RelativeSource={RelativeSource AncestorType=telerik:RadGridView}}" />
        </Style>
    </telerik:RadGridView.RowStyle>
    <telerik:RadGridView.RowDetailsTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal" Margin="10,10,10,10">
                <TextBlock Text="Column width: " />
                <TextBlock Text="{Binding Tag.Columns[columnName].ActualWidth, RelativeSource={RelativeSource AncestorType=telerik:GridViewRow}}" />
            </StackPanel>
        </DataTemplate>
    </telerik:RadGridView.RowDetailsTemplate>
</telerik:RadGridView>
XAML:

<telerik:RadGridView Grid.Row="2" ItemsSource="{Binding RenumberNotes}" x:Name="tgr" AutoGenerateColumns="False"
                     RowDetailsVisibilityMode="Visible">
    <telerik:RadGridView.Columns>
        <telerik:GridViewDataColumn x:Name="columnName" DataMemberBinding="{Binding CurrentValue}" Width="100" />
    </telerik:RadGridView.Columns>
    <telerik:RadGridView.RowDetailsTemplate>
        <DataTemplate>
            <telerik:RadGridView AutoGenerateColumns="False" ItemsSource="{Binding Subnotes}" 
                                             Loaded="RadGridView_Loaded">
                <telerik:RadGridView.Columns>
                    <telerik:GridViewColumn Header="test" />
                </telerik:RadGridView.Columns>
            </telerik:RadGridView>
        </DataTemplate>
    </telerik:RadGridView.RowDetailsTemplate>
</telerik:RadGridView>


这更干净,不会破坏任何模式。

您可以尝试在要控制宽度的列的标题中放置一个矩形。随便说说。将另一列宽绑定到该矩形的实际宽度。我没有telerik控件可供试验。起初我认为这是潜在的天才,但不幸的是,它似乎不起作用。我可以创建矩形并正确观察大小的变化,但另一个网格视图不会更新。由于某种原因,该列似乎无法识别绑定…我猜它位于不同的命名空间中。我在尝试此操作的基础上添加了更多信息。如您所示,它适用于文本块,但以相同的方式绑定列宽似乎没有任何作用。正如初始大小所示,但是我希望列大小随主列的更改而变化。为了做到这一点,我必须订阅主gridview上的“ColumnWidthChanged”事件,然后遍历细节RGV并更新列宽以匹配新的大小。不幸的是,这并不能提供平滑的大小调整,但在完成操作时会“跳跃”,但这并不可怕。如果订阅“ColumnWidthChangED”而不是“ColumnWidthChangED”,则最后一部分会变得平滑。我知道我可以编辑评论,但这样留给其他人,他们一开始没有注意到细微的区别。。。
<telerik:RadGridView Grid.Row="2" ItemsSource="{Binding RenumberNotes}" x:Name="tgr" AutoGenerateColumns="False"
                     RowDetailsVisibilityMode="Visible">
    <telerik:RadGridView.Columns>
        <telerik:GridViewDataColumn x:Name="columnName" DataMemberBinding="{Binding CurrentValue}" Width="100" />
    </telerik:RadGridView.Columns>
    <telerik:RadGridView.RowDetailsTemplate>
        <DataTemplate>
            <telerik:RadGridView AutoGenerateColumns="False" ItemsSource="{Binding Subnotes}" 
                                             Loaded="RadGridView_Loaded">
                <telerik:RadGridView.Columns>
                    <telerik:GridViewColumn Header="test" />
                </telerik:RadGridView.Columns>
            </telerik:RadGridView>
        </DataTemplate>
    </telerik:RadGridView.RowDetailsTemplate>
</telerik:RadGridView>