MVVM转换器Int2StringConverter基础类

很多时候都是会用到int 转换为字符串的情况的转换器

可能在编辑界面需要一个下拉框来显示列表

在列表页面需要一个转换器显示为具体的字符串数据

这个时候使用,有一个Items属性的转换器,就都搞定了

using Client.Model;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Windows.Data;

namespace Client.Common.Converter
{
    [ValueConversion(typeof(int), typeof(string))]
    public class Int2StringConverter : NotifyPropertyChanged, IValueConverter
    {
        public Int2StringConverter()
        {
            Items = new ObservableCollection<ListItem>();
            InitialItems();
        }

        protected virtual void InitialItems()
        {

        }
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            string result = string.Empty;
            if (value == null)
            {
                return result;
            }
            int sourceValue = System.Convert.ToInt32(value);
            var model = Items.Where(f => f.Value == sourceValue).FirstOrDefault();
            if (model != null)
                result = model.DisplayName;
            return result;
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            int result = -1;
            if (value == null)
            {
                return result;
            }
            string sourceValue = value.ToString();
            var model = Items.Where(f => f.DisplayName == sourceValue);
            if (model.Count() > 0)
                result = model.First().Value.Value;
            return result;
        }

        private ObservableCollection<ListItem> items;

        public ObservableCollection<ListItem> Items
        {
            get { return items; }
            set
            {
                items = value;
                OnPropertyChanged("Items");
            }
        }

    }
}

  

时间: 2024-10-25 10:29:54

MVVM转换器Int2StringConverter基础类的相关文章

MVVM -- CallMethodAction 和 InvokeCommandAction

MVVM实践教程 算算,从事Silverlight和WPF的开发也有1年多的时间了,虽然时间不算长,虽然还没有突出的成就,但是感觉也还算一般. 但是,从头至今都没有去认真研究和使用过MVVM,虽然它被认为是Silverlight和WPF开发的最佳架构实践. 我想这里面还是有一些原因,就像一般开始我们始终都不会看好单元测试.直到有一天你体会到它的魅力,它的好处. 最近的项目,却不得不采用MVVM的模式:UI没有定,甚至服务端的Service都没有定,但是不能等到这些都做好才开始展开我们的开发工作.

Silverlight项目笔记1:UI控件与布局、MVVM、数据绑定、await/async、Linq查询、WCF RIA Services、序列化、委托与事件

最近从技术支持转到开发岗,做Silverlight部分的开发,用的Prism+MVVM,框架由同事搭好,目前做的主要是功能实现,用到了一些东西,侧重于如何使用,总结如下:   1.UI控件与布局     2.MVVM     3.数据绑定     4.await/async     5.Linq查询     6.WCF RIA Services     7.序列化     8.委托与事件 1.UI控件与布局 常用的主要是Grid.StackPanel.Border,其中最常用的的是Grid,是一

Note7:MVVM模式之数据绑定

一.资源说明 (1)本文参考自: 一步步走进WPF的MVVM模式(二):数据绑定 WPF之数据绑定总结 二.正文 数据绑定 (Data Binding)是WPF最重要的特性之一,也是实现 MVVM(WPF) 模式的一大支柱. 简而言之,数据绑定就是将两个属性绑定在一起,源属性(source)改变带动目标属性(target)一起改变.这样也减少了事件(Events)的使用. 绑定源可以是任意对象的属性,而目标必须是依赖对象的依赖属性. 绑定源主要分为以下几种场景(后面主要介绍前两种): (1)依赖

WPF 微信 MVVM

公司的同事离职了,接下来的日子可能会忙碌,能完善DEMO的时间也会少了,因此,把做的简易DEMO整体先记录一下,等后续不断的完善. 参考两位大神的日志:WEB版微信协议部分功能分析.[完全开源]微信客户端.NET版 尤其是周见智大神的DEMO,因为好多和微信的服务端交互,都借鉴了大神的源码,帮助巨大,可以说我相当于做了一个翻版,只是用WPF开发的而已,外观上不同,但是实际交互上是差不多的. 微信分为两个部分,一个是登录,一个是主体,基于此,WPF也主要是这两个窗体来实现. 一.登录模块 1.登录

在UWP中构建自己的MVVM框架

其实写这篇博文的时候我是拒绝的,因为这牵扯到一个高大上的东西——“框架”.一说起这个东西,很多朋友就感觉有点蒙了,尤其是编程新手.因为它不像在代码里面定义一个变量那么显而易见,它是需要在你的整个程序架构上体现出来的,并且对于框架来说,并没有什么固定的代码格式,你可以这样写,当然也可以那样写.只要最终可以达到同样的效果,各个模块之间能够体现这种框架的思想就OK.所以当你都是用MVVM框得到两份架写的相同需求的Demo看时,发现里面的很多代码都不一样,请不要惊讶,因为你正在接触一个很抽象的东西,这种

Prism4 文档翻译系列---第5章 实现MVVM模式

MVVM模式有助于清楚的区分应用程序界面的业务层和展现层.保持一个清晰的应用程序逻辑和UI分离有助于处理开发和设计过程中大量的问题,同时,使得应用程序的测试,维护,和扩展更加容易.MVVM也可以极大的提升代码的可重用性也可以使开发人员和设计人员在分别开发应用程序的某一部分时更方便的沟通交流. 运用MVVM模式,应用程序的UI和下层表现以及业务逻辑被拆分到三个单独到类中:视图,封装了UI和UI逻辑:视图模型,封装了展现逻辑和状态:模型,封装了应用程序的业务逻辑和数据. Prism包含了如何在Sil

Ionic、SASS、MVVM、LESS简介

Ionic_百度百科 ionic[1] 是一个专注于用WEB开发技术,基于HTML5创建类似于手机平台原生应用的一个开发框架.绑定了AngularJS和Sass.这个框架的目的是从web的角度开发手机应用,基于PhoneGap的编译平台,可以实现编译成各个平台的应用程序. ionic的开发添加android和ios环境. ionic提供很多css组件[2] 和javascript UI库. ionic可以支持定制android和ios的插件,也支持服务端REST的敏捷开发. ionic 特点 编

angular中的MVVM模式

在开始介绍angular原理之前,我们有必要先了解下mvvm模式在angular中运用.虽然在angular社区一直将angular统称为前端MVC框架,同时angular团队也称它为MVW(Whatever)框架,但angular框架整体上更接近MVVM模式.下面是Igor Minar发布在Google+ https://plus.google.com/+IgorMinar/posts/DRUAkZmXjNV的文章内容: MVC vs MVVM vs MVP. What a controver

WPF MVVM+EF增删改查 简单示例(二) 1对1 映射

WPF MVVM+EF增删改查 简单示例(一)实现了对学生信息的管理. 现在需求发生变更,在录入学生资料的时候同时需要录入学生的图片信息,并且一名学生只能有一张图片资料.并可对学生的图片资料进行更新. 添加了那些功能,先看看效果图: 第一步:添加实体类StudentPhotoEntity.cs public class StudentPhotoEntity { public int StudentId { get; set; } public byte[] StudentPhoto { get;