控制网格内列表框的宽度



我有一个视图。视图中的轴网分为两列。

<Grid x:Name="grdView">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>

Auto列(第0列)中,我有另一个视图

<Border Grid.Column="0" Style="{DynamicResource BorderStyle}">
    <Views:ViewerDataBrowser x:Name="dataBrowser" DataContext="{Binding ViewDataBrowserInstance}" />
</Border>

在这个视图中,我有一个列表框和一个为列表框定义的数据模板。在数据模板中,我有2行,每行有2个文本块。

问题

当文本块字符超过列的宽度时,列表框将被拉伸,同时还会显示滚动条。我不希望发生这种事。我希望文本被截断并显示。。。最后。

我尝试了文本块的文本修剪和文本换行。但这并没有奏效。我还尝试将数据模板的宽度设置为Auto,但它不起作用。对我来说,唯一可行的解决方案是将数据模板的宽度设置为常数值。

我希望列表框适合网格,即使文本块有很长的文本,也不显示滚动条。请提出解决方案。

您可以获取并设置listBox的horiztonalScrollBar属性,如MSDN网站上所述。设置listBox的宽度(预uwp)时,可以使用与设备无关的像素(DIP)。此外,您可以将宽度设置为与listBox容器的宽度成比例,而不是使用常数——尽管不建议使用DIP和自动调整大小,因为某些尺寸表现得更好。

问题是由于网格的列宽设置为"*"而引起的。当我把列宽改为常量时,这个问题似乎已经解决了。

关于文本块的截断,我设置了文本框修剪属性。

最新更新