【发布时间】:2018-09-13 00:31:15
【问题描述】:
我有一个 RadGridView (Telerik),它有几列。在行详细信息模板中,我有另一个网格视图显示具有相同列的子项。这对于初始显示非常有用,但我希望详细信息模板的列宽遵循主网格的宽度(详细信息模板没有标题)。
我尝试为主列命名并按名称绑定到该列的“Width”和“ActualWidth”属性,但它似乎没有采用,也没有给出任何绑定错误。
有没有办法将一个 RadGridView 上的列宽绑定到另一个 RadGridView 上的列宽?
编辑
根据下面的建议,我尝试将视图绑定到标记并按此方式进行,但它似乎不起作用。它适用于文本块,但不设置列宽。这是我看到的视频:
https://www.screencast.com/t/BiHmiarQExV
这是我正在使用的代码:
<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>
如您所见,它正确更新了文本块,因此绑定正确,但未更新列宽。
【问题讨论】:
-
您可以尝试在要控制宽度的列的标题中放置一个矩形。命名它。将另一个列宽绑定到该矩形的实际宽度。我没有 Telerik 控件可供试验。
-
起初认为这是潜在的天才,但不幸的是似乎没有奏效。我可以创建矩形并正确观察大小变化,但其他网格视图不会更新。似乎该列由于某种原因无法识别绑定...
-
我猜它在不同的命名空间中。
标签: wpf user-interface data-binding telerik-grid radgridview