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>