728x90
728x170
▶ CustomDataTemplateSelector.cs
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
namespace TestProject
{
/// <summary>
/// 커스텀 데이터 템플리트 선택자
/// </summary>
public class CustomDataTemplateSelector : DataTemplateSelector
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Property
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 문자열 템플리트 - StringTemplate
/// <summary>
/// 문자열 템플리트
/// </summary>
public DataTemplate StringTemplate { get; set; }
#endregion
#region 정수 템플리트 - IntegerTemplate
/// <summary>
/// 정수 템플리트
/// </summary>
public DataTemplate IntegerTemplate { get; set; }
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Protected
#region 템플리트 선택하기 (코어) - SelectTemplateCore(item)
/// <summary>
/// 템플리트 선택하기 (코어)
/// </summary>
/// <param name="item">항목</param>
/// <returns>템플리트</returns>
protected override DataTemplate SelectTemplateCore(object item)
{
if(item.GetType() == typeof(string))
{
return StringTemplate;
}
else if(item.GetType() == typeof(int))
{
return IntegerTemplate;
}
else
{
return null;
}
}
#endregion
}
}
728x90
▶ MainPage.xaml
<Page x:Class="TestProject.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
xmlns:local="using:TestProject"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
FontFamily="나눔고딕코딩"
FontSize="16">
<Page.Resources>
<DataTemplate x:Key="StringDataTemplateKey" x:DataType="x:String">
<Grid
Margin="10"
Background="{ThemeResource SystemControlBackgroundAccentBrush}">
<TextBlock
HorizontalAlignment="Center"
VerticalAlignment="Center"
Padding="10"
Foreground="{ThemeResource SystemControlForegroundChromeWhiteBrush}"
TextWrapping="Wrap"
Text="{x:Bind}" />
</Grid>
</DataTemplate>
<DataTemplate x:Key="IntegerDataTemplateKey" x:DataType="x:Int32">
<Grid
Margin="10"
Background="{ThemeResource SystemControlBackgroundChromeMediumBrush}">
<TextBlock
Style="{StaticResource HeaderTextBlockStyle}"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Padding="10"
Text="{x:Bind}" />
</Grid>
</DataTemplate>
<local:CustomDataTemplateSelector x:Key="CustomDataTemplateSelectorKey"
StringTemplate="{StaticResource StringDataTemplateKey}"
IntegerTemplate="{StaticResource IntegerDataTemplateKey}" />
</Page.Resources>
<Grid>
<muxc:ItemsRepeater Name="itemsRepeater" Grid.Column="0"
Margin="10"
HorizontalAlignment="Center"
VerticalAlignment="Center"
ItemTemplate="{StaticResource CustomDataTemplateSelectorKey}">
<muxc:ItemsRepeater.Layout>
<muxc:UniformGridLayout
MaximumRowsOrColumns="3"
MinItemWidth="200"
MinItemHeight="200" />
</muxc:ItemsRepeater.Layout>
</muxc:ItemsRepeater>
</Grid>
</Page>
300x250
▶ MainPage.xaml.cs
using System.Collections.Generic;
using Windows.Foundation;
using Windows.Graphics.Display;
using Windows.UI.ViewManagement;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
namespace TestProject
{
/// <summary>
/// 메인 페이지
/// </summary>
public sealed partial class MainPage : Page
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 생성자 - MainPage()
/// <summary>
/// 생성자
/// </summary>
public MainPage()
{
InitializeComponent();
#region 윈도우 크기를 설정한다.
double width = 800d;
double height = 600d;
double dpi = (double)DisplayInformation.GetForCurrentView().LogicalDpi;
ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.PreferredLaunchViewSize;
Size windowSize = new Size(width * 96d / dpi, height * 96d / dpi);
ApplicationView.PreferredLaunchViewSize = windowSize;
Window.Current.Activate();
ApplicationView.GetForCurrentView().TryResizeView(windowSize);
#endregion
#region 윈도우 제목을 설정한다.
ApplicationView.GetForCurrentView().Title = "ItemsRepeater 엘리먼트 : ItemsSource 속성을 사용해 혼합 타입 컬렉션 사용하기";
#endregion
List<object> sourceList = new List<object>
{
64,
"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
128,
"Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.",
256,
"Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.",
512,
"Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
1024
};
this.itemsRepeater.ItemsSource = sourceList;
}
#endregion
}
}
728x90
그리드형(광고전용)
'C# > UWP' 카테고리의 다른 글
[C#/UWP] RadioButtons 엘리먼트 : SelectionChanged 이벤트 사용하기 (0) | 2021.07.03 |
---|---|
[C#/UWP] Grid 엘리먼트 사용하기 (0) | 2021.07.03 |
[C#/UWP] ItemsRepeater 엘리먼트 : 필터링/정렬 기능 사용하기 (0) | 2021.07.01 |
[C#/UWP] ItemsRepeater 엘리먼트 : 애니메이션 스크롤 사용하기 (0) | 2021.06.29 |
[C#/UWP] ItemsRepeater 엘리먼트 : 중첩 레이아웃 사용하기 (0) | 2021.06.29 |
[C#/UWP] ItemsRepeater 엘리먼트 : Layout 속성을 사용해 커스텀 가상화 레이아웃 사용하기 (0) | 2021.06.29 |
[C#/UWP] ItemsRepeater 엘리먼트 사용하기 (0) | 2021.06.29 |
[C#/UWP] Canvas 엘리먼트 사용하기 (0) | 2021.06.28 |
[C#/UWP] Border 엘리먼트 사용하기 (0) | 2021.06.28 |
[C#/UWP] SymbolIconSource 엘리먼트 사용하기 (0) | 2021.06.26 |