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