WPF用户控件不支持网格比例宽度“*&引用;在列表视图中使用时

WPF用户控件不支持网格比例宽度“*&引用;在列表视图中使用时,wpf,xaml,Wpf,Xaml,我创建了一个简单的用户控件,它有一个网格,列宽设置为比例间距 <UserControl {Usual UC definition stuff}> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="3*"/> <ColumnDefinition Width="1*"/> <C

我创建了一个简单的
用户控件
,它有一个
网格
,列宽设置为比例间距

<UserControl {Usual UC definition stuff}>
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="3*"/>
            <ColumnDefinition Width="1*"/>
            <ColumnDefinition Width="1*"/>
            <ColumnDefinition Width="1*" />
        </Grid.ColumnDefinitions>
        <TextBox Text="{Binding Path=RotOrder}" Grid.Column="0" />
        <TextBox Text="{Binding Path=Rot1}" Grid.Column="1"/>
        <TextBox Text="{Binding Path=Rot2}" Grid.Column="2"/>
        <TextBox Text="{Binding Path=Rot3}" Grid.Column="3"/>
    </Grid>
</UserControl>

只要文本框的内容与框中的内容相匹配,控件就会像魅力一样工作,其间距完全符合预期。但是如果内容不合适,内容太多的
文本框就会开始扩大,并弄乱比例。在这种情况下,列宽比例没有得到遵守有什么原因吗?

如果您在不同的行中看到一列的不同宽度,这是预期的行为,因为每个
ListViewItem
都有自己的
Grid
,它执行自己的度量和排列。如果希望跨行具有相同的列宽,则可能需要使用固定宽度。
ListViewItem
使用的整个控件的不同行中的不同宽度由
HorizontalContentAlighment
处理。我的问题是任何一行的内部问题。如果我正确理解了
*
术语,在我的示例中,第一列的大小应该与其他三列的大小相同。总是。独立控件就是这样工作的。如果列中的内容太多,它会被截断,但列宽永远不会改变。在
ListViewItem
中,如果列中的内容太大,则该列将展开,相对比例将被打破。
    <ListView Name="MyList2" Width="150" HorizontalAlignment="Left">
        <ListView.ItemContainerStyle>
            <Style TargetType="ListViewItem">
                <Setter Property="HorizontalContentAlignment" Value="Stretch" />
            </Style>
        </ListView.ItemContainerStyle>
        <ListView.ItemTemplate>
            <DataTemplate>
             <local:UserControl1/>   
            </DataTemplate>

        </ListView.ItemTemplate>
    </ListView>