반응형
항목수평 방향으로 컨트롤
항목의 수평 방향을 가진 항목 컨트롤에서 상속된 컨트롤을 알고 있습니까?
항목을 호스트하는 데 사용되는 패널을 변경하기만 하면 됩니다.
<ItemsControl ...>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
프로모션 답변은 좋지만 항목을 확장하려면 다음과 같은 대안이 있습니다.
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Rows="1" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
다음은 항목 컨트롤 내에서 수평 스크롤을 수행하는 방법의 예입니다.
먼저 표시할 항목의 목록을 가져오거나 설정하는 데 사용되는 기본 창 보기 모델 클래스입니다.
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:
주 창.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>
클라이언트 영역의 높이/넓이에 따라 다음과 같은 레이아웃, 항목이 가로로 스크롤됩니다.
세로로 스크롤하는 방법에 대한 예를 포함하여 자세한 내용은 이 블로그 링크에서 확인할 수 있습니다.
최상의 답변은 좋지만, 사용자 컨트롤로 작동할 수 없습니다.사용자 컨트롤이 필요한 경우 이 방법을 사용하면 됩니다.
내 버전:
<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
에게ItemsControl
XAML 또는 코드 뒤에 있습니다.또한 참고:uc:
가 될 것입니다.xmlns:uc="NamespaceOfMyControl"
파일의 맨 위에 선언되었습니다.
수백 또는 수천 개의 항목이 포함된 긴 목록의 경우 성능 문제를 방지하려면 가상화 스택 패널을 사용하는 것이 좋습니다.
언급URL : https://stackoverflow.com/questions/1052342/itemscontrol-with-horizontal-orientation
반응형
'programing' 카테고리의 다른 글
데이터베이스와의 연결을 끊고 PostgreSQL의 기본 데이터베이스로 돌아가는 방법은 무엇입니까? (0) | 2023.05.13 |
---|---|
Xcode 9 빠른 언어 버전(SWIFT_VERSION) (0) | 2023.05.13 |
가로 세로 비율 및 너비를 유지하여 UI 이미지 크기 조정 (0) | 2023.05.13 |
조건부로 지시사항 적용 (0) | 2023.05.13 |
Excel의 VBA Editor/IDE를 최신 제품으로 대체할 수 있습니까? (0) | 2023.04.08 |