在DataTemplate网格属性中绑定到其列定义



我需要的是保证我所有的列在更大时不会被其内容控件所伸展。现在这样做了。我在此处找到了一个解决方案,请在此处输入链接描述。它有效,但我想知道是否可以以某种方式绑定到项目模板网格宽度本身而不是绑定到ListBox宽度?如果可能的话,在性能方面是否适当?

<telerik:RadListBox.ItemTemplate>
                <DataTemplate>
                    <Grid> <-- need to bind this Grid Width
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="*" /> <-- to these columns width for further calculations
                            <ColumnDefinition Width="*" />
                            <ColumnDefinition Width="*" />
                        </Grid.ColumnDefinitions>

您可以命名父 Grid并像:

一样绑定到它。
<Grid x:Name="ParentGrid">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="{Binding Path=ActualWidth,
                                          ElementName=ParentGrid,
                                          Converter={StaticResource YourConverter}"/>
        <!-- ... -->
    </Grid.ColumnDefinitions>
    <!-- ... -->
</Grid>

另一种方法是将Grid绑定为父母,例如:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="{Binding Path=ActualWidth,
                                          RelativeSource={RelativeSource AncestorType={x:Type Grid}},
                                          Converter={StaticResource YourConverter}"/>
        <!-- ... -->
    </Grid.ColumnDefinitions>
    <!-- ... -->
</Grid>

最新更新