C# 将DataTemplate网格属性内部绑定到其列定义

C# 将DataTemplate网格属性内部绑定到其列定义,c#,.net,wpf,C#,.net,Wpf,我需要的是保证我所有的专栏在变大时不会被它的内容控件拉伸。现在是了。我在这里找到了解决办法。它可以工作,但我想知道是否可以以某种方式绑定到项目模板网格宽度本身,而不是绑定到列表框宽度?如果可能的话,在性能方面这是正确的方式吗 <telerik:RadListBox.ItemTemplate> <DataTemplate> <Grid> <-- need to bind this Gr

我需要的是保证我所有的专栏在变大时不会被它的内容控件拉伸。现在是了。我在这里找到了解决办法。它可以工作,但我想知道是否可以以某种方式绑定到项目模板网格宽度本身,而不是绑定到列表框宽度?如果可能的话,在性能方面这是正确的方式吗

<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 x:Name="ParentGrid">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="{Binding Path=ActualWidth,
                                          ElementName=ParentGrid,
                                          Converter={StaticResource YourConverter}"/>
        <!-- ... -->
    </Grid.ColumnDefinitions>
    <!-- ... -->
</Grid>

我很确定你误用了星型单位,很可能你需要自动、嵌套网格或者MaxWidth/MinWidth。很难说,因为您并没有显示完整的布局,但应该可以避免显式设置列宽的要求。
<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="{Binding Path=ActualWidth,
                                          RelativeSource={RelativeSource AncestorType={x:Type Grid}},
                                          Converter={StaticResource YourConverter}"/>
        <!-- ... -->
    </Grid.ColumnDefinitions>
    <!-- ... -->
</Grid>