[PR]
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
プログラミング、3DCGとその他いろいろについて
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
public enum FigureType { Ellipse, Rectangle, Triangle }3つの値はそれぞれ図形のタイプを表しています。
using System.Windows; namespace DataTemplateSelectorDemo { public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); figuresView.ItemsSource = System.Enum.GetValues(typeof(FigureType)); } } public enum FigureType { Ellipse, Rectangle, Triangle } }
<Window x:Class="DataTemplateSelectorDemo.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <ListBox x:Name="figuresView"/> </Window>
using System.Windows; using System.Windows.Controls; namespace DataTemplateSelectorDemo { public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); figuresView.ItemsSource = System.Enum.GetValues(typeof(FigureType)); } } public enum FigureType { Ellipse, Rectangle, Triangle } public class FigureTypeDataTemplateSelector : DataTemplateSelector {
public DataTemplate EllipseDataTemplate { get; set; }
public DataTemplate RectangleDataTemplate { get; set; }
public DataTemplate TriangleDataTemplate { get; set; }
public override DataTemplate SelectTemplate(
object item,
DependencyObject container
)
{
if (!(item is FigureType)) return null;
switch ((FigureType)item)
{
case FigureType.Ellipse:
return EllipseDataTemplate;
case FigureType.Rectangle:
return RectangleDataTemplate;
case FigureType.Triangle:
return TriangleDataTemplate;
default: return null;
}
}
}
}
<Window x:Class="DataTemplateSelectorDemo.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:model="clr-namespace:DataTemplateSelectorDemo" Title="MainWindow" Height="350" Width="525"> <ListBox x:Name="figuresView" ItemTemplateSelector="{DynamicResource templateSelector}"/> <Window.Resources>
<DataTemplate x:Key="MyEllipseDataTemplate">
<Ellipse Stroke="Black" Width="100" Height="100"/>
</DataTemplate>
<DataTemplate x:Key="MyRectangleDataTemplate">
<Rectangle Stroke="Black" Width="150" Height="100"/>
</DataTemplate>
<DataTemplate x:Key="MyTriangleDataTemplate">
<Polygon Stroke="Black" Points="100,0 0,100 200,100"/>
</DataTemplate>
<model:FigureTypeDataTemplateSelector
x:Key="templateSelector"
EllipseDataTemplate="{StaticResource MyEllipseDataTemplate}"
RectangleDataTemplate="{StaticResource MyRectangleDataTemplate}"
TriangleDataTemplate="{StaticResource MyTriangleDataTemplate}"
/> </Window.Resources>
</Window>