如何告诉ComboBox不影响它所在网格的列宽?
这是一个最小的例子:
library(geosphere)
Caps = cbind(world.cities$long, world.cities$lat)
CapDistMatrix = distGeo(Caps, Caps)
当选择第二个项目时,ComboBox会更改其大小,并与其一起更改第三列的大小(可以通过标签的米色背景看到)。
即使有足够的空间可以完全展示它,这也会导致米色标签中的文字有时位于可见区域之外:
我想要的是第三列总是具有米色标签的宽度(或列中的任何其他元素而不是ComboBox),并且ComboBox缩短其文本以使其适合该宽度。 ComboBox的弹出部分可以更大,我只是在这里谈论按钮部分。我已经尝试将TextBlock内容和TextTrimming设置为CharacterEllipsis的ComboBox设置,但无济于事。
答案 0 :(得分:2)
这里应该为你做这件事:
<StackPanel Orientation="Vertical">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="5"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Label>This is some text</Label>
<Label Grid.Row="1">This is some text</Label>
<GridSplitter Grid.Column="1" Grid.RowSpan="2" HorizontalAlignment="Stretch"/>
<Label x:Name="Label" Grid.Column="2" Background="Beige" HorizontalAlignment="Right">This is some text</Label>
<ComboBox Grid.Row="1" Grid.Column="2" Width="{Binding ElementName=Label, Path=ActualWidth, Mode=OneWay}">
<ComboBoxItem IsSelected="True">This is some text</ComboBoxItem>
<ComboBoxItem>This is some really lengthy text that is really long</ComboBoxItem>
</ComboBox>
</Grid>
</StackPanel>
答案 1 :(得分:0)
设置组合框控件的MaxWidth。它将允许组合框消耗到该值。如果你想要一个固定的宽度,那么你需要设置组合框的宽度属性。
答案 2 :(得分:0)
您可以使用Combobox的Width属性,如
<ComboBox Grid.Row="1" Grid.Column="2" Width="200">
文字自动换行也可以帮助您,以下链接有一个示例,说明如何使用文本换行组合框:ComboBox TextWrap Binding
答案 3 :(得分:0)
以下是供您参考的代码
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="4*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<ComboBox HorizontalAlignment="Stretch" Grid.Column="1">
&#13;