首页 > 解决方案 > WPF 用户控件在列表视图中使用时不支持网格比例宽度“*”

问题描述

我创建了一个简单UserControlGrid列宽设置为比例间距。

<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>

当我在窗口上独立使用用户控件时,即使控件设置为固定宽度并且内容超出每个TextBox. 任何不适合的内容都会被忽略。

我还尝试在ListView. 我已将HorizontalContentAlignment属性设置ListViewItem为“Stretch”,以确保所有项目的宽度相同。

    <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>

只要文本框的内容适合该框,控件的作用就像魅力一样,间距完全符合预期。但是如果内容不合适,TextBox内容过多的内容就会开始扩大并打乱比例。在这种情况下没有遵守列宽比例是否有原因?

标签: wpfxaml

解决方案


推荐阅读