博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WPF中,多key值绑定问题,一个key绑定一个界面上的对象
阅读量:6195 次
发布时间:2019-06-21

本文共 1612 字,大约阅读时间需要 5 分钟。

原文:

问题说明:

当用到dictionary<key,value>来储存数据的时候,有时候需要在界面上绑定一个key来显示value,这时候有两种思路:

一种是写一个自定义的扩展类,类似Binding,这里取名为“MyBinding”,在binding类内部实现key的绑定。

另一种更简洁,更通用的方法是用索引实现绑定。属性能够绑定到界面,同样的索引也能绑定到界面。

实现代码如下:

1.自定义MarkupExtension,

using System;using System.Windows.Data;using System.Windows.Markup;namespace 索引绑定{    public class MyBinding : MarkupExtension    {        public int key { get; set; }        public override object ProvideValue(IServiceProvider serviceProvider)        {            var b = new Binding("Value");            b.Source = ViewModelNomal.Instance.li[key];            return b.ProvideValue(serviceProvider);        }    }}

  2.索引绑定

public class ModelUseIndexer : INotifyPropertyChanged    {        private readonly Dictionary
_localDictionary = new Dictionary
(); [IndexerName("Item")] public int this[int index] { get { int result; _localDictionary.TryGetValue(index, out result); return result; } set { if (_localDictionary.ContainsKey(index)) _localDictionary[index] = value; else _localDictionary.Add(index, value); if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs("Item[]")); } } public event PropertyChangedEventHandler PropertyChanged; }

  

运行效果是一样的,但索引绑定依赖代码性更少,更符合oop的思想。

源码地址:https://files.cnblogs.com/files/lizhijian/%E7%B4%A2%E5%BC%95%E7%BB%91%E5%AE%9A.rar

谢谢阅读,希望可以帮助到你。

转载地址:http://hquca.baihongyu.com/

你可能感兴趣的文章
linux 配置软连接的需要注意的一个问题
查看>>
如何对system.img和userdata.img解包,再重新打包
查看>>
都是 HBase 上的 SQL 引擎,Kylin 和 Phoenix 有什么不同?
查看>>
zookeepr集群环境搭建
查看>>
java.util.concurrent.CountDownLatch用方法
查看>>
linux中时间设置date、hwclock、clock
查看>>
jenkins 安装
查看>>
vim 入门
查看>>
从外形如何分辨iTouch是几代的?
查看>>
excel之两个sheet对比
查看>>
Kubernetes 中的服务发现与负载均衡
查看>>
windows系统使用技巧
查看>>
Python之多线程爬虫抓取网页图片
查看>>
论学好Linux系统的超级重要性
查看>>
什么是Code Review(转)
查看>>
Linux下安装Nginx详细图解教程
查看>>
Java高级部分笔记-------泛型
查看>>
SpringBoot 整合Mybatis
查看>>
初学Android
查看>>
日志管理
查看>>