Kennen Sie Steuerelemente, die von ItemsControl übernommen wurden und die horizontale Ausrichtung von Elementen aufweisen?ItemsControl mit horizontaler Ausrichtung
Antwort
einfach das Panel ändern verwendet, um die Elemente zu bewirten:
<ItemsControl ...>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
Die Top-Antwort ist gut, aber ich konnte es nicht mit Benutzersteuerelementen an der Arbeit. Wenn Sie UserControls benötigen, sollte dies helfen.
ItemsControl with Horizontal Usercontrols
Meine Version:
<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>
, um Daten zu binden, müssen Sie eine ItemsSource
zum ItemsControl
im XAML oder Code hinter hinzuzufügen. Beachten Sie auch, dass uc:
der xmlns:uc="NamespaceOfMyControl"
am Anfang der Datei deklariert ist.
Ich bin nicht gewohnt, WPF zu benutzen, also ist das, was ich sagen werde, sehr einfaches Zeug. Ich habe herausgefunden, dass in einem UserControl "UserControl.Resources" anstelle von "Window.Resources" verwendet werden sollte. Wie auch immer, danke für die tolle Antwort, löste mein Problem. –
Während die beworbene Antwort groß ist, ist hier eine Alternative, wenn Sie die Elemente strecken möchten.
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Rows="1" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
Wenn Sie UWP verwenden, benötigen Sie UWP-UniformGrid von hier: https://github.com/rickapps/UWP-UniformGrid-Control. Ich habe es einfach implementiert und dazu die Lösung von NielW. Wirklich einfach und löst das Problem. –
Dies ist ein Beispiel für das horizontale Scrollen in ItemsControl.
Zuerst die Viewmodel-Klasse des Hauptfensters, die verwendet wird, um die Liste der Elemente, die wir anzeigen möchten, zu ermitteln.
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; }
}
}
Das Hauptfenster XAML für die Ansicht:
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>
Je nachdem, wie hoch/breit Ihr Client-Bereich ist , dies führt zu dieser Art von Layout, Überlauf Elemente horizontal gescrollt:
Weitere Details finden Sie in diesem Blog-Link, darunter ein Beispiel dafür, wie Scrollen zu tun finden die vertikal:
- 1. UICollectionView Horizontaler Bildlauf mit horizontaler Ausrichtung
- 2. wie android Linearlayout mit RTL horizontaler Ausrichtung schaffen
- 3. Richten Sie UIActivityIndicator neben UILabel in horizontaler Ausrichtung aus
- 4. JTable mit horizontaler Bildlaufleiste
- 5. ListView mit horizontaler ScrollView
- 6. TwoWay-Bindung mit ItemsControl
- 7. Binding ItemsControl mit WrapPanel?
- 8. Itemscontrol mit mehreren Datatemplates
- 9. Ist es möglich, die RecyclerView-Vorschau im Layout-Editor mit horizontaler Ausrichtung anzuzeigen?
- 10. WrapPanel wird nicht umgebrochen, wenn es sich in einem StackPanel mit horizontaler Ausrichtung befindet
- 11. Bootstrap-Zeile mit horizontaler Bildlauf
- 12. Horizontaler Überlauf mit slideDown()/slideUp()
- 13. Horizontaler Datumsschieber mit Coverflow Design
- 14. Android - vertikale Ausrichtung funktioniert, horizontale Ausrichtung leer
- 15. CSS - Nur horizontaler Überlauf?
- 16. Android Horizontaler RecyclerView wrap_content
- 17. Horizontaler RecyclerView in CoordinatorLayout?
- 18. Html Horizontaler Zeilenfehler graphviz
- 19. Zentraler horizontaler Text
- 20. Horizontaler Barplot in ggplot2
- 21. auto scroll horizontaler Linksprung
- 22. horizontaler Text auf Pfad
- 23. UITableViewController in UIScrollView mit horizontaler Paging
- 24. wie man Bildergalerie mit horizontaler Bildlauf erstellen
- 25. css - Anzeigen von Bildern mit horizontaler Bildlaufleiste
- 26. Problem mit ganzer Seite horizontaler Bildlauf
- 27. Problem mit fester Kopfzeile - kein horizontaler Bildlauf
- 28. Spinner arbeitet nicht mit horizontaler lisview
- 29. ItemTemplate: ListBox vs ItemsControl
- 30. Scrollen im horizontalen ItemsControl
Sie nicht brauchen IsItemsHost = "True" hinzufügen zum StackPanel? –
Ich glaube, das ist nur notwendig, wenn Sie das gesamte Steuerelement neu gestalten. Siehe http://msdn.microsoft.com/en-us/library/system.windows.controls.itemscontrol.itemspanel.aspx –
Antwort gilt auch für Silverlight – Scott