精华内容
下载资源
问答
  • using Microsoft.Practices.Prism.Mvvm; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Input; namespace ...

    xaml中的变量与ViewModel中的公用属性绑定,当修改了公用属性时,xaml中绑定的值也会随之变化。

    注意:不是绑定字段。(this.Name = "hh"; 正确,触发通知)  (this.name= "hh"; 错误,不会触发通知)

     

     

    using System.Windows;
    
    namespace PropertyChange
    {
        /// <summary>
        /// Interaction logic for MainWindow.xaml
        /// </summary>
        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
    
                this.DataContext = new ViewModel();
            }
        }
    }
    
    using Microsoft.Practices.Prism.Commands;
    using Microsoft.Practices.Prism.Mvvm;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Input;
    
    namespace PropertyChange
    {
        public class ViewModel : BindableBase
        {
            public string name = "TT";
            public string Name
            {
                get { return name; }
                set
                {
                    SetProperty(ref name, value);
                }
            }
    
            #region NewCommand
            DelegateCommand<object> clickCommand = null;
            public ICommand ClickCommand
            {
                get
                {
                    if (clickCommand == null)
                    {
                        clickCommand = new DelegateCommand<object>((p) => OnClick(p), (p) => CanClick(p));
                    }
    
                    return clickCommand;
                }
            }
    
            private bool CanClick(object parameter)
            {
                return true;
            }
    
            private void OnClick(object parameter)
            {
                this.Name = "hh";
            }
    
            #endregion
        }
    }
    

     

    展开全文
  • WPF MVVM Prism 传参

    2015-05-21 11:58:00
    最近在学习使用WPFMVVM,实践中发现ComandParameter不知道怎么传递到ViewModel中来,在网上找了一些朋友的解决办法大多数使用IComand来解决实现如下: //这里目的在于将DataGrid选中行传递进来进行删除 ...

    最近在学习使用WPF的MVVM,实践中发现ComandParameter不知道怎么传递到ViewModel中来,在网上找了一些朋友的解决办法大多数使用IComand来解决实现如下:

    //这里目的在于将DataGrid选中行传递进来进行删除 
    public ICommand DelCmd
            {
    
                get
                {
                    return new DelegateCommand<object>((para) =>
                    {
                        SelectStudet = (Students)para;
                        //删除学生
                        DelStudent();
                    });
                }
            }    
    

    以上代码能够解决我遇到的问题,但是自己想想既然Prism是一个成熟的框架,不应该出现这种传参都实现不了的问题啊,随后我就仔细看了一下Prism的DelegateCommand所在的类,发现他有一个DelegateCommand<T>的定义,随后问题迎刃而解,如下:

    //命令定义
     public DelegateCommand<object> DeleCmd { get; set; }
    //命令初始化 
    public MainWindowViewModel()
            {
                this.GetAllStudents();
              
                DeleCmd = new DelegateCommand<object>(new Action<object>((para) =>
                {
                    DeleStudent(para);
                }));
              
            }

    这样就能解决使用Prism传递参数的问题了。

    ps:虽然这不是什么高深的问题,但是这反映了我个人的一些缺点:总是在遇到问题的时候去求助度娘,在实际项目开发中为了效率,这也无可厚非,但是在平常自己的学习中还需要多多思考,多多培养自己去解决问题的能力,写这篇文章谨以此来勉励自己,也希望大多数新研发人员不要有遇到问题就去找别人的解决方法的想法。(文中如有言辞不准确的地方,谢谢大家能够指出来,毕竟我也是菜 ,希望大家多多指点,哈哈!)

    转载于:https://www.cnblogs.com/ErrorPink/p/4519344.html

    展开全文
  • WPF Prism MVVM

    2017-12-05 16:28:13
    WPF Prism MVVM C# WPFPrism开发
  • C# WPF MVVM(prism) 页面结构 #mermaid-svg-t8Ul8anJD860E0Bc .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-t8Ul8anJD860E0Bc ....

    技术栈

    C# WPF MVVM(prism)

    页面结构

    选择连接参数
    原始表格数据
    与PLC连接
    圆角显示在datagrid中
    向PLC写入数据

    在这里插入图片描述

    技术路线及难点

    一、将Excel文件转化为datatable
    本项目使用的是xls文件,使用EPPLUS和NPIO转换失败,根据资料显示EPPLUS适合转换xlsx格式,NPIO适合转换xls,本文采用的是内置的转换方法

    public DataTable GetExcelTableByOleDB(string strExcelPath, string tableName)
                {
                    try
                    {
                        DataTable dtExcel = new DataTable();
                        //数据表
                        DataSet ds = new DataSet();
                        //获取文件扩展名
                        string strExtension = System.IO.Path.GetExtension(strExcelPath);
                        string strFileName = System.IO.Path.GetFileName(strExcelPath);
                        //Excel的连接
                        OleDbConnection objConn = null;
                        switch (strExtension)
                        {
                            case ".xls":
                                objConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strExcelPath + ";" + "Extended Properties=\"Excel 8.0;HDR=yes;IMEX=1;\"");
                                break;
                            case ".xlsx":
                                objConn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + strExcelPath + ";" + "Extended Properties=\"Excel 12.0;HDR=yes;IMEX=1;\"");//此连接可以操作.xls与.xlsx文件 (支持Excel2003 和 Excel2007 的连接字符串)  备注: "HDR=yes;"是说Excel文件的第一行是列名而不是数,"HDR=No;"正好与前面的相反。"IMEX=1 "如果列中的数据类型不一致,使用"IMEX=1"可必免数据类型冲突。 
                                break;
                            default:
                                objConn = null;
                                break;
                        }
                        if (objConn == null)
                        {
                            return null;
                        }
                        objConn.Open();
                        //获取Excel中所有Sheet表的信息
                        System.Data.DataTable schemaTable = objConn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);
                        //获取Excel的第一个Sheet表名
                        // string tableName1 = schemaTable.Rows[0][2].ToString().Trim();
                        string strSql = "select * from [" + tableName + "$]";
                        //获取Excel指定Sheet表中的信息
                        OleDbCommand objCmd = new OleDbCommand(strSql, objConn);
                        OleDbDataAdapter myData = new OleDbDataAdapter(strSql, objConn);
                        myData.Fill(ds, tableName);//填充数据
                        objConn.Close();
                        //dtExcel即为excel文件中指定表中存储的信息
                        dtExcel = ds.Tables[tableName];
                        return dtExcel;
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message + "\r\n" + ex.StackTrace);
                        return null;
                    }
               }
    

    二、将datatable绑定到datagrid
    在winfrom环境下此类操作比较简单,但到了wpf下就变得比较复杂,尤其是在MVVM架构下。
    这里的绑定关键点是 ObservableCollection<>类型的使用
    <>内应用一个和excel表头相同架构的类(ExcelDataModel)

    另一个关键点是循环datatable每一行,然后将起哄中每一个单元格放置到一个实体化的ExcelDataModel中,再把ExcelDataModel添加到Source中
    三、关于WPF中combox的使用
    关于这一块网上有多种方法,大多较为繁琐难懂,这里采用习惯的ObservableCollection<>类型进行绑定

    View代码

     <ComboBox x:Name="comboBox" ItemsSource="{Binding PlcCategory}" SelectedItem="{Binding SelectedCpuType,Mode=OneWayToSource}" DisplayMemberPath="Name" Margin="180,346,441,41">
    

    ViewModel代码

            public class CategoryInfo
            {
                public string Name { get; set; }
                public int Value { set; get; }
            }
            public CategoryInfo SelectedCpuType { set; get; }
            public ObservableCollection<CategoryInfo> PlcCategory { get; set; } = new ObservableCollection<CategoryInfo>() { };
             public MainWindowViewModel()//构造函数
            {
                var v = Enum.GetValues(typeof(CpuType));
                foreach (var item in v)
                {
                    PlcCategory.Add(new CategoryInfo() { Value=Convert.ToInt32(item),Name=item.ToString()});
                }
            }
    

    关于其中的Enum.GetValues(typeof(CpuType));需要重点说明一下

    比如: public enum K
    {
    x=0,
    y,
    }

    Enum.GetNames()返回的是 : x y
    Enum.GetValues() 返回的是:0 1

    在本文中
    public enum CpuType
    {
    S7200 = 0,
    Logo0BA8 = 1,
    S7300 = 10,
    S7400 = 20,
    S71200 = 30,
    S71500 = 40
    }
    Enum.GetValues(typeof(CpuType))的值应该为 0 1 10 20 30 40
    Enum.GetNames则应为前面的PLC型号

    注意 这里的GetValues GetName和CategoryInfo的name和value分别代表Enum的名称和值,以及 Combox的选择显示值和选后返回值
    -----------结束----------------------------------------
    1
    1
    1
    1

    1
    1
    1
    1
    1

    1
    1

    创建一个表格

    一个简单的表格是这么创建的:

    项目 Value
    电脑 $1600
    手机 $12
    导管 $1

    设定内容居中、居左、居右

    使用:---------:居中
    使用:----------居左
    使用----------:居右

    第一列 第二列 第三列
    第一列文本居中 第二列文本居右 第三列文本居左

    SmartyPants

    SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

    TYPE ASCII HTML
    Single backticks 'Isn't this fun?' ‘Isn’t this fun?’
    Quotes "Isn't this fun?" “Isn’t this fun?”
    Dashes -- is en-dash, --- is em-dash – is en-dash, — is em-dash

    创建一个自定义列表

    Markdown
    Text-to-HTML conversion tool
    Authors
    John
    Luke

    如何创建一个注脚

    一个具有注脚的文本。1

    注释也是必不可少的

    Markdown将文本转换为 HTML

    KaTeX数学公式

    您可以使用渲染LaTeX数学表达式 KaTeX:

    Gamma公式展示 Γ(n)=(n1)!nN\Gamma(n) = (n-1)!\quad\forall n\in\mathbb N 是通过欧拉积分

    Γ(z)=0tz1etdt. \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,.

    你可以找到更多关于的信息 LaTeX 数学表达式here.

    新的甘特图功能,丰富你的文章

    Mon 06Mon 13Mon 20已完成 进行中 计划一 计划二 现有任务Adding GANTT diagram functionality to mermaid
    • 关于 甘特图 语法,参考 这儿,

    UML 图表

    可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图:

    张三李四王五你好!李四, 最近怎么样?你最近怎么样,王五?我很好,谢谢!我很好,谢谢!李四想了很长时间, 文字太长了不适合放在一行.打量着王五...很好... 王五, 你怎么样?张三李四王五

    这将产生一个流程图。:

    链接
    长方形
    圆角长方形
    菱形
    • 关于 Mermaid 语法,参考 这儿,

    FLowchart流程图

    我们依旧会支持flowchart的流程图:

    Created with Raphaël 2.2.0开始我的操作确认?结束yesno
    • 关于 Flowchart流程图 语法,参考 这儿.

    导出与导入

    导出

    如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

    导入

    如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
    继续你的创作。


    1. 注脚的解释 ↩︎

    展开全文
  • WPF MVVM框架PRISM

    2017-08-25 13:15:00
    WPF MVVM框架PRISM 转载于:https://www.cnblogs.com/sunlyk/p/7427525.html

    WPF MVVM框架PRISM

    转载于:https://www.cnblogs.com/sunlyk/p/7427525.html

    展开全文
  • MVVM即Model-View-ViewModel,MVVM模式与MVP(Model-View-...MVVM框架有很多,开源的主要有:PRISM:由微软提供,和MEF/Unity一起用于依赖注入,支持组合命令,可以扩展。MSDN上有详细的教程和演练。MVVM Light T...
  • 我正在开发模块化应用程序,因此决定重新启动Prism并将其集成到我要创建的内容中,而不是尝试重新创建轮子。要求:易于更新的新功能(UI /服务)WPF(不是Silverlight,尤其是因为MS表示不再更新:()共享库,其中包含...
  • wpf prism mvvm 教程

    千次阅读 2017-02-16 10:38:06
    wpf prism mvvm 教程
  • 本文将介绍如何在.NET Core3环境下使用... 我们在上一篇.NET Core 3 WPF MVVM框架 Prism系列之数据绑定中知道prism实现数据绑定的方式,我们按照标准的写法来实现,我们分别创建Views文件夹和ViewModels文件夹,将...
  • WPFMVVMPrism学习历程

    千次阅读 2017-11-30 16:00:12
    面对从天而降的两个专有名词,今日我开始了漫漫MvvmPrism的学习之路。 之前一直在做WinForm的开发,本身WPF就接触的不多,更别提Siverlight了。 好了说正题。 首先是进行5个小时左右的Silverlight...
  • 1.添加引用Microsoft.Practices.Prism.Mvvm.dll,Microsoft.Practices.Prism.SharedInterfaces.dll; 2.新建文件夹,View,ViewModel,View中添加新项FirstView.XAML(Window页面),在ViewModel中添加新项...
  • 事件聚合器# 在上一篇 .NET Core 3 WPF MVVM框架 Prism系列之模块化 我们留下了一些问题,就是如何处理同模块不同窗体之间的通信和不同模块之间不同窗体的通信,Prism提供了一种事件机制,可以在应用程序中低耦合的...
  • Prism初研究之使用Prism实现WPFMVVM模式 Prism初研究之使用Prism实现WPFMVVM模式类职责和特征视图类(View)视图模型类(View Model)模型类(Model)类间的交互数据绑定(Data Binding)实现...
  • 程序采用Prism+Unity实现一个软件框架;利用vlc.net.wpf实现最简单的播放器功能;界面使用了MahApps.MetroUI库;本地化为WPFLocalizeExtension;Nlog实现日志功能。界面如下,可以切换不同的页面:设置项:播放界面...
  • 本文将介绍如何在.NET Core3环境下使用MVVM框架Prism基于区域Region的导航系统在讲解Prism导航系统之前,我们先来看看一个例子,我在之前的demo项目创建一个登录界面:我们看到这里是不是一开始想象到使用WPF带有的...
  • MVVM】目的是为了分离视图(View)和模型(Model)的耦合——解耦1、View负责前端展示,与ViewModel进行数据和命令的交互。(双向的数据属性传递,单向的命令属性传递View→ViewModel)2、ViewModel,负责前端视图业务...
  • WPF MVVM使用prism4.1搭建

    2013-09-03 17:05:00
    MVVM即Model-View-ViewModel,MVVM模式与MVP(Model-View-Presenter)模式相似,主要目的是分离视图...PRISM:由微软提供,和MEF/Unity一起用于依赖注入,支持组合命令,可以扩展。MSDN上有详细的教程和演练。 MVV...
  • [Microsoft Press] Developer's Guide to Microsoft Prism 4 Building Modular MVVM Applications with Windows Presentation Foundation and Microsoft Silverlight.pdf
  •  在上一篇 .NET Core 3 WPF MVVM框架 Prism系列之模块化 我们留下了一些问题,就是如何处理同模块不同窗体之间的通信和不同模块之间不同窗体的通信,Prism提供了一种事件机制,可以在应用程序中低耦合的模块之间...
  • 本文将介绍如何在.NET Core3环境下使用MVVM框架Prism的使用区域管理器对于View的管理一.区域管理器#我们在之前的Prism系列构建了一个标准式Prism项目,这篇文章将会讲解之前项目中用到的利用区域管理器更好的对我们...
  • wpf Prism 实现MVVM

    2020-11-08 11:50:18
    用C#写程序也有好几个年头了,一直都停留在很基础的阶段。今年抽空学了一下用EF6去...Prism是C#上面一个MVVM的工具,于是我今天上午捣鼓了一下,参照Prism官网的方法,搭建了一下脚手架。 MVVM帮我们把“干活”的代码,
  • (给DotNet加星标,提升.Net技能)转自:RyzenAdorercnblogs.com/ryzen/p/12185054.html前言我们都知道,为了构成一个低耦合,高内聚的应用程序,我们会分层,拿一个WPF程序来说,我们通过MVVM模式去将一个应用程序的...
  • Prism初研究之使用Prism实现WPFMVVM的高级应用 Prism初研究之使用Prism实现WPFMVVM的高级应用Commands复合命令(Composite Commands)注册和注销子命令在活动的子视图上运行命令集合中绑定命令触发器和命令的...
  • 一.安装Prism1.使用程序包管理控制台#Install-Package Prism.Unity -Version 7.2.0.1367也可以去掉‘-...为啥安装prism会跟Prism.Unity有关系,我们知道Unity是个IOC容器,而Prism本身就支持IOC,且目前官方支持几种...

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 278
精华内容 111
关键字:

mvvmprismwpf