美文网首页
WPF 绑定枚举集合

WPF 绑定枚举集合

作者: Ritchie_Li | 来源:发表于2022-05-15 11:17 被阅读0次

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

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>

效果如下:

相关文章

  • WPF 绑定枚举集合

    假如存在星期名称的枚举类型: public enum Weeks { Monday, Tuesday, ...

  • wpf 中的无效绑定

    设置wpf绑定的跟踪级别为high,output中观察wpf的处理流程: 对于一个无效的绑定,wpf尝试了5次,最...

  • WPF 数据绑定-绑定数据组集合

    UI设计: 列表绑定数据集合 后台代码: private ICollection products; produ...

  • 基于WPF的截图工具,功能和QQ截图类似

    本项目基于WPF开发,适合于新手上手WPF,里面不涉及到太复杂的用法,都是一些基础绑定等操作。 有关于WPF或者项...

  • WPF数据绑定

    元素绑定 数据绑定最简单的形式是,源对象是WPF元素而且源属性是依赖属性。依赖项属性具有内置的更改通知支持,当在源...

  • C#枚举及与枚举常数的转换

    1、枚举的定义 2、枚举绑定到comboBox 3、枚举常数转换为枚举string转枚举 数字值转枚举

  • WPF集合空间

    1.ComboBox空间 练习 1.创建一个wpf项目,添加一个usercontrol项(name:ComboBo...

  • 测试WPF绑定bug

    1、低级错误:有没有绑错2、去属性那里打断点,get、set有没有进3、xaml加上twoway,UpdateSo...

  • WPF 数据绑定Binding

    自定义Binding 当为Binding设置了继承System.ComponentModel.INotifyPro...

  • WPF MVVM 动态绑定

    1.MVVM(Caliburn.Micro) 按钮绑定的两种方式 通过名称直接绑定到ViewModel中的方法...

网友评论

      本文标题:WPF 绑定枚举集合

      本文链接:https://www.haomeiwen.com/subject/ucnvurtx.html