Kri*_*sto 5 c# wpf combobox list multiple-columns
是否有可能"强制"列表中的组合框项目出现在两列中?
例如这样:
嗯,你可以,这是XAML:
<ComboBox Name="ComboBox">
<ComboBox.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="2"/>
</ItemsPanelTemplate>
</ComboBox.ItemsPanel>
</ComboBox>
Run Code Online (Sandbox Code Playgroud)
现在一个简单的测试,添加从0到8的数字给出:

现在你可以随心所欲地设计它...... :)
当然,每个项目(每个数字,在这种特殊情况下)都是单独的,可点击的项目,所以没有误解.
[编辑]我刚刚注意到你想要'相反的方式',即在'行'方向,如果是这样,那么也许最好使用WrapPanel相反,如在另一个答案中建议的那样.首先UniformGrid在列方向上填充网格.
也许有一种方法可以做到这一点UniformGrid,但没有明显和简单的一键更改(我以前在这里错了:))
您可以将ItemsPanel更改为WrapPanel,只需要注意高度(您可以根据项目数编写转换器来计算它):
<ComboBox>
<ComboBox.Resources>
<Style TargetType="ComboBox">
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<WrapPanel IsItemsHost="True" Orientation="Vertical" Width="100" Height="50" />
</ItemsPanelTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="ComboBoxItem">
<Setter Property="Width" Value="50" />
</Style>
</ComboBox.Resources>
<ComboBoxItem Content="Value 1" />
<ComboBoxItem Content="Value 2" />
<ComboBoxItem Content="Value 3" />
<ComboBoxItem Content="Value 4" />
<ComboBoxItem Content="Value 5" />
</ComboBox>
Run Code Online (Sandbox Code Playgroud)