我在这里阅读了一些有关该问题的帖子,但仍未找到问题的解决方案,我也使用了此guide。
我的ListBox仍显示为带有ScrollViewer的长列表,而不是我所指的水平。
XAML:已编辑!
<DockPanel LastChildFill="False" IsEnabled="{Binding IsWindowEnabled}" MinWidth="724" Background="Red">
<!-- save notifictaion popup -->
<Label DockPanel.Dock="Top" Margin="10" FontSize="15" Foreground="Green" Content="{x:Static ml:MultiLang._123}" x:Name="ML_0003" />
<StackPanel DockPanel.Dock="Top" Orientation="Horizontal" Margin="10 0">
<Label Content="Select Constant Type" Margin="0 0 10 0" />
<ComboBox Width="150" ItemsSource="{Binding ComboNames}" DisplayMemberPath="Value" SelectedValuePath="Key" SelectedValue="{Binding SelectedComboType}" />
</StackPanel>
<ListBox DockPanel.Dock="Top" BorderBrush="Black" BorderThickness="1" HorizontalAlignment="Stretch" Margin="10" ItemsSource="{Binding Combos}" SelectedItem="{Binding SelecetedCombo}" ScrollViewer.CanContentScroll="False" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Margin="0 0 0 5">
<Label Content="{Binding Index}" Margin="10 0" Width="20" />
<TextBox Width="150" Margin="0" IsEnabled="{Binding IsEditable}" Text="{Binding Path=Value, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</DockPanel>
但我的名单仍然是这样的:
图片:编辑第2期
我做错了什么?
非常感谢!
答案 0 :(得分:1)
请尝试从
更改ItemPanelisnull()
要
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
忽略上述建议。
修改强>
您可以尝试为您在DataTemplate中使用的内部堆栈面板提供背景颜色吗?像
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
它将让您了解stackpanel如何占用ListBox项目中的空间。然后我们可以尝试调整每个ListBoxItem的宽度
编辑2
这就是我在我身边看到的
和XAML是
<DataTemplate>
<StackPanel Background="Blue" Orientation="Horizontal" Margin="0 0 0 5">
<Label Content="{Binding Index}" Margin="10 0" Width="20" />
<TextBox Width="150" Margin="0" IsEnabled="{Binding IsEditable}" Text="{Binding Path=Value, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}" />
</StackPanel>
</DataTemplate>
答案 1 :(得分:1)
问题是你在列表框中设置了220的宽度,并且因为项目在包装面板中,它们将垂直显示,尝试增加宽度
<ListBox Width="220" [OTHER PROPERTIES]>
增加宽度
<ListBox Width="520" [OTHER PROPERTIES]>
或者如果您的设计允许,请删除width属性并让列表框填充它的父级
答案 2 :(得分:0)
默认情况下,ListBox使用名为VirtualizingStackPanel的面板来排列其项目 垂直。
<ListBox>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>