假如存在星期名称的枚举类型:
public enum Weeks
{
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday
}
需要绑定到WPF UI上,实现步骤如下:
1. 创建Windwows 资源
<Window.Resources>
<ObjectDataProvider x:Key="odpWK"
ObjectType="{x:Type sys:Enum}"
MethodName="GetNames">
<ObjectDataProvider.MethodParameters>
<x:Type TypeName="local:Weeks"/>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</Window.Resources>
2. 添加静态的绑定
<ComboBox Margin="5" ItemsSource="{Binding Source={StaticResource odpWK}}">
</ComboBox>
效果如下:
上面实现了简单的枚举类型绑定到WPF UI
下面实现稍复杂一些类型的数据绑定,例如:
(1) 书类型
public enum BookTypes
{
History, Technolog, Novel
}
(2) 书的数据结构
public class Book
{
public string Title { get; set; }
public BookTypes BookType { get; set; }
}
(3) Book类型,包含获取数据集合函数
public class Books
{
public static List<Book> GetBooks()
{
return new List<Book>()
{
new Book(){Title="三国演义",BookType=BookTypes.History},
new Book(){Title="西游记",BookType=BookTypes.Novel},
new Book(){Title="物联网技术",BookType=BookTypes.Technolog}
}.ToList();
}
public static List<Book> GetBooks2(string booktype)
{
return new List<Book>()
{
new Book(){Title="三国演义",BookType=BookTypes.History},
new Book(){Title="西游记",BookType=BookTypes.Novel},
new Book(){Title="物联网技术",BookType=BookTypes.Technolog}
}.Where(book => book.BookType.ToString() == booktype).ToList();
}
}
步骤1: Window 资源中添加 ObjectDataProvider
<ObjectDataProvider x:Key="odpBooks"
ObjectType="{x:Type local:Books}"
MethodName="GetBooks">
</ObjectDataProvider>
步骤2. List中添加绑定
=================
<ListBox Grid.Column="2" Background="Beige" FontSize="24" Margin=" 5"
ItemsSource="{Binding Source={StaticResource odpBooks}}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Title}"/>
<TextBlock Text="{Binding BookType}" Background="LightGreen"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
效果如下:
========
假如需要选择某一类型的书籍显示
(1) 在Windows资源中添加
<ObjectDataProvider x:Key="odpBooks2"
ObjectType="{x:Type local:Books}"
MethodName="GetBooks2">
<ObjectDataProvider.MethodParameters>
Technolog
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
(2)WPF 控件中添加数据的绑定
<ListBox Background="Azure"
ItemsSource="{Binding Source={StaticResource odpBooks2}}"
FontSize="24" Margin=" 5">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Title}"/>
<TextBlock Text="{Binding BookType}" FontSize="16"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
效果如下: