是否知道从具有水平方向项目的ItemsControl继承的任何控件?具有水平方向的ItemsControl
190
A
回答
388
只需更改用于托管项目面板:
<ItemsControl ...>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
5
顶端回答是好,但我无法得到它与用户控件工作。如果你需要UserControls,这应该有所帮助。
ItemsControl with Horizontal Usercontrols
我的版本:
<Window.Resources>
<DataTemplate x:Key="ItemTemplate2">
<StackPanel>
<uc:MyUserControl MinWidth="20" BorderBrush="Black" BorderThickness="0.1" />
</StackPanel>
</DataTemplate>
<ItemsPanelTemplate x:Key="ItemsPanelTemplate1">
<StackPanel Orientation="Horizontal" Margin="0,0,0,0"/>
</ItemsPanelTemplate>
</Window.Resources>
<StackPanel>
<ItemsControl x:Name="list_MyControls"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Margin="0,8,0,0"
ItemTemplate="{StaticResource ItemTemplate2}"
ItemsPanel="{StaticResource ItemsPanelTemplate1}" />
</StackPanel>
要绑定到数据,您将需要一个ItemsSource
在XAML或代码添加到ItemsControl
后面。另请注意,uc:
将是在文件顶部声明的xmlns:uc="NamespaceOfMyControl"
。
20
虽然推广的答案很好,但如果您想要项目拉伸,以下是一个替代方案。
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Rows="1" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
2
这是一个如何在ItemsControl中进行水平滚动的例子。
首先,主窗口viewmodel类用于获取/设置我们希望显示的项目列表。
MainWindowViewModel.cs
using System.Collections.Generic;
namespace ItemsControl
{
public class Item
{
public Item(string title)
{
Title = title;
}
public string Title { get; set; }
}
public class MainWindowViewModel
{
public MainWindowViewModel()
{
Titles = new List<Item>()
{
new Item("Slide 1"),
new Item("Slide 2"),
new Item("Slide 3"),
new Item("Slide 4"),
new Item("Slide 5"),
new Item("Slide 6"),
new Item("Slide 7"),
new Item("Slide 8"),
};
}
public List<Item> Titles { get; set; }
}
}
为视图的主窗口XAML:
MainWindow.xaml
<Window x:Class="ItemsControl.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ItemsControl"
mc:Ignorable="d"
Title="MainWindow" Height="400" Width="400">
<Window.DataContext>
<local:MainWindowViewModel />
</Window.DataContext>
<Grid Margin="5">
<ScrollViewer
VerticalScrollBarVisibility="Disabled"
HorizontalScrollBarVisibility="Auto">
<ItemsControl
x:Name="SearchResultList"
ItemsSource="{Binding Titles}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Vertical"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border
Margin="5"
BorderThickness="1"
BorderBrush="Aqua">
<TextBlock
Text="{Binding Title}"
HorizontalAlignment="Center"
VerticalAlignment="Top"
FontSize="12"
TextWrapping="Wrap"
TextAlignment="Center"
FontWeight="DemiBold"
Width="150"
Height="150" />
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</ScrollViewer>
</Grid>
</Window>
取决于有多高/宽你的客户区,这将导致这种布局,溢出项目水平滚动:
更多细节可以在这个博客链接中找到,包括如何做一个例子垂直滚动:
相关问题
- 1. 水平居中水平ItemsControl
- 2. WPF ItemsControl水平方向和填充父项?
- 3. 水平方向的WPF TreeView?
- 4. 在ItemsControl列表中水平定向的WrapPanel垂直
- 5. WinRT中的可调整水平ItemsControl
- 6. 嵌套ItemsControl方向
- 7. 水平方向UILabel旁边的UIActivityIndicator
- 8. 从水平方向的Polyfit程度
- 9. Silverlight中DataGrid的水平方向4
- 10. IME调整水平方向的选项
- 11. Android的 - 垂直方向的作品,水平方向空白
- 12. 具有相同水平位置的div
- 13. 具有多列标题的水平列
- 14. OLAP - 水平具有相同的名称
- 15. 浮动动作菜单水平方向
- 16. WrapPanel水平方向不起作用
- 17. Xcode View Controller - 水平方向问题
- 18. Eclipse RCP快速查看水平方向
- 19. Android水平RecyclerView滚动方向
- 20. 创建ListBoxItems(水平方向的列表框)之间的水平线
- 21. UIScrollView具有多个图像水平
- 22. 构造具有水平滚动条
- 23. 行具有取决于水平位置
- 24. 具有水平和垂直元素
- 25. 显示项目的集合ItemsControl的水平
- 26. 使用WPF ItemsControl和CollectionView的水平对齐问题
- 27. 非常长的横向缩略图(水平方向)HTML页面
- 28. 添加具有一个水平因子平均值的列
- 29. 核心情节 - 具有平均水平线的条形图
- 30. Pytest - 灯具功能水平
难道你需要添加IsItemsHost =“真”到StackPanel? – 2009-06-27 09:56:28
我相信只有在您重新模板化整个控件时才有必要。请参阅http://msdn.microsoft.com/en-us/library/system.windows.controls.itemscontrol.itemspanel.aspx – 2009-06-27 10:10:59
答案也适用于Silverlight – Scott 2010-04-23 06:53:51