WPF 界面元素绑定枚举集合

假如存在星期名称的枚举类型:

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>

效果如下:
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

flysh05

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值