我有下面的ComboBox,它为comboBox的ItemTemplate提供了一个自定义的DataTemplate:
<ComboBox SelectedIndex="{x:Bind PaletteType.GetHashCode()}"
x:Name="PaletteComboBox" MinWidth="200"
ItemsSource="{x:Bind ComboPalettes}"
SelectionChanged="PaletteComboBox_OnSelectionChanged">
<ComboBox.ItemTemplate>
<DataTemplate x:DataType="adapters:ComboPaletteAdapter">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"></ColumnDefinition>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch">
<TextBlock Text="{x:Bind PaletteNameTranslatedResource}"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Margin="0,0,0,0" />
<StackPanel Orientation="Horizontal"
HorizontalAlignment="Right"
VerticalAlignment="Center" Spacing="8"
Margin="0,4,0,0">
<Border Width="24"
Height="24"
Background="{x:Bind CurrentPalette.ColorRed, Converter={StaticResource ColorToBrushConverter}, Mode=OneWay}"
CornerRadius="26"
IsTapEnabled="False"
x:Uid="SettingsPaletteColorRedTT" />
<Border Width="24"
Height="24"
Background="{x:Bind CurrentPalette.ColorOrange, Converter={StaticResource ColorToBrushConverter}, Mode=OneWay}"
CornerRadius="26"
IsTapEnabled="False"
x:Uid="SettingsPaletteColorOrangeTT" />
<Border Width="24"
Height="24"
Background="{x:Bind CurrentPalette.ColorGreen, Converter={StaticResource ColorToBrushConverter}, Mode=OneWay}"
CornerRadius="26"
IsTapEnabled="False"
x:Uid="SettingsPaletteColorGreenTT" />
<Border Width="24"
Height="24"
Background="{x:Bind CurrentPalette.ColorBlue, Converter={StaticResource ColorToBrushConverter}, Mode=OneWay}"
CornerRadius="26"
IsTapEnabled="False"
x:Uid="SettingsPaletteColorBlueTT" />
</StackPanel>
</StackPanel>
</Grid>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
我想在颜色边框的左边添加一个文本,同时将颜色向右对齐,但似乎HorizontalAlignment="Stretch"
不起作用。
项目占用的空间始终基于其内容:
我怎样才能使每一项都占据组合框下拉菜单的全部宽度?
2条答案
按热度按时间svmlkihl1#
如何使ComboBox的项目布局在UWP中采用全宽度
出现此行为的原因是您将列的
Width
设置为Auto。请使用***
**代替。就像这样:
如果你想让所有的颜色都向右对齐,你可以使用
Grid
而不是Stackpanel
。下面是我使用的示例代码:
结果如下所示:
pu82cl6c2#
不好看但这很有效。我不知道任何其他方式来访问可视化的WebsomboBox项目。