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

本文共 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://zxezx.baihongyu.com/

你可能感兴趣的文章
定位到oob
查看>>
C# Language Introduction
查看>>
WP8开发环境配置 以及 如何知道自己的CPU支持SLAT
查看>>
C# Winform 按ESC关闭窗体
查看>>
C#中的泛型
查看>>
C#程序中注释过多的8条理由
查看>>
c++primer记录(二) 模板
查看>>
ubuntu下面板上无网络连接的图标
查看>>
进程管理
查看>>
EasyMock入门
查看>>
vdp介绍
查看>>
无线网络wifi (WPA/WPA2)密码破解方法
查看>>
Quagga添加自己的命令
查看>>
.NET 索引器
查看>>
定时器常用的两种工作方式及编程要点
查看>>
hdu1429之BFS
查看>>
MyCCL特征码定位原理学习
查看>>
[每日一题] OCP1z0-047 :2013-08-01 正则表达式--- REGEXP_REPLACE 函数
查看>>
Android MD5算法
查看>>
题解-python-CodeForces 1A
查看>>