Bạn có biết bất kỳ điều khiển nào được kế thừa từ ItemsControl có định hướng ngang của các mục không?ItemsControl với hướng ngang
Trả lời
Đơn giản chỉ cần thay đổi bảng điều khiển sử dụng để lưu trữ các mục:
<ItemsControl ...>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
Câu trả lời đầu là tốt, nhưng tôi không thể có được nó để làm việc với UserControls. Nếu bạn cần UserControls, điều này sẽ giúp.
ItemsControl with Horizontal Usercontrols
Version tôi:
<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>
Để liên kết với dữ liệu, bạn sẽ cần phải thêm một ItemsSource
đến ItemsControl
trong XAML hoặc mã phía sau. Cũng lưu ý rằng uc:
sẽ là xmlns:uc="NamespaceOfMyControl"
được khai báo ở đầu tệp.
Tôi không được sử dụng để sử dụng WPF, vì vậy có lẽ những gì tôi sẽ nói là những thứ rất cơ bản. Tôi phát hiện ra rằng bên trong một UserControl bạn nên sử dụng "UserControl.Resources" thay vì "Window.Resources". Dù sao, cảm ơn cho câu trả lời tuyệt vời, giải quyết vấn đề của tôi. –
Trong khi câu trả lời được thăng hạng là tuyệt vời, đây là giải pháp thay thế nếu bạn muốn các mục này kéo dài.
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Rows="1" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
Nếu bạn đang sử dụng UWP, bạn sẽ cần UWP-UniformGrid từ đây: https://github.com/rickapps/UWP-UniformGrid-Control. Tôi chỉ thực hiện nó cộng với giải pháp của NielW ở trên. Thực sự dễ dàng và giải quyết vấn đề. –
Đây là ví dụ về cách cuộn ngang trong một ItemsControl.
Đầu tiên là lớp chế độ xem khung cửa sổ chính được sử dụng để lấy/đặt danh sách các mục mà chúng tôi muốn hiển thị.
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; }
}
}
Cửa sổ chính XAML cho quan điểm:
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>
Tùy thuộc vào độ cao như thế nào/rộng diện tích khách hàng của bạn là , điều này sẽ dẫn đến loại bố cục này, mục bị tràn được cuộn theo chiều ngang:
Thông tin chi tiết có thể được tìm thấy tại liên kết blog này, trong đó có một ví dụ về cách thực hiện di chuyển theo chiều dọc:
- 1. WrapPanel được định hướng ngang bên trong ItemsControl liệt kê theo chiều dọc
- 2. UIImagePickerĐiều khiển quay video với hướng ngang
- 3. ItemsControl với tiêu đề tĩnh
- 4. in ảnh theo hướng ngang?
- 5. Android, chỉ định hướng ngang?
- 6. vấn đề chế độ ngang với thanh điều hướng
- 7. WPF đến XPS theo hướng ngang
- 8. ItemsControl Kéo và Thả
- 9. ItemsControl ItemTemplate Binding
- 10. ItemsControl button click command
- 11. WPF ItemsControl - Lệnh trên ViewModel không bắn từ bên trong ItemsControl
- 12. Nhúng một ItemsControl trong ScrollViewer
- 13. Bố cục động WPF với ItemsControl và Grid
- 14. Khởi chạy ứng dụng theo hướng ngang cho IPad
- 15. ItemsControl thiếu thanh cuộn dọc
- 16. Nhóm Mutliple RadioButton trong ItemsControl
- 17. ItemsControl, VirtualizingStackPanel và ScrollViewer height
- 18. GridView với cuộn ngang
- 19. Quản lý bố cục bên trong Radiogroup định hướng ngang
- 20. WPF Binding vào parent ItemsControl từ bên trong của trẻ em ItemsControl dữ liệu mẫu
- 21. Thiết kế khác nhau cho hướng ngang và hướng dọc android
- 22. Đồng đều các liên kết trên một điều hướng ngang
- 23. Hướng lật ngang trong Bảng phân cảnh iOS
- 24. Định hướng ngang nhưng giá trị khung dọc?
- 25. Cách đặt hướng ngang bằng cách sử dụng HTML2PDF
- 26. ActionbarSherlock - các tab không hồi đáp theo hướng ngang
- 27. JList - sử dụng thanh cuộn dọc thay vì nằm ngang với hướng cuộn dọc?
- 28. Thêm thanh điều hướng động trong một dòng với thanh cuộn ngang
- 29. Tại sao Firefox làm cho các đường viền bị gạch ngang lệch hướng với nhau?
- 30. Hướng dẫn phải chứa 32 chữ số với 4 dấu gạch ngang
Đừng bạn cần phải thêm IsItemsHost = "True" vào StackPanel? –
Tôi tin rằng điều đó chỉ cần thiết nếu bạn tái tạo lại toàn bộ quyền kiểm soát. Xem http://msdn.microsoft.com/en-us/library/system.windows.controls.itemscontrol.itemspanel.aspx –
Trả lời cũng giữ cho Silverlight – Scott