控制网格内列表框的宽度

时间:2016-05-02 12:19:42

标签: c# wpf xaml listbox

我有一个观点。视图中的网格分为2列。

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

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

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

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

问题

当文本块字符大于列的宽度时,列表框将被拉伸并且还会显示滚动条。我不希望这种情况发生。我希望文本被截断并在最后显示....

我尝试了文本块的文本修剪和文本换行。但它没有用。我还尝试将数据模板的宽度设置为自动,但它无法正常工作。唯一可行的解​​决方案是将数据模板的宽度设置为常量值。

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

2 个答案:

答案 0 :(得分:1)

您可以按MSDN site所述获取并设置listBox的horiztonalScrollBar属性。设置listBox(pre-uwp)的宽度时,可以使用device independent pixels(DIPs)。此外,您可以将宽度设置为与listBox容器的宽度成比例,而不是使用常量,但不建议使用DIP和自动调整大小,因为某些维度的行为更好。

答案 1 :(得分:0)

问题是由于网格的列宽设置为&#34; *&#34;而引起的。 当我将列宽更改为常量,即与父级的宽度相同时,问题似乎是固定的。

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