问题一、usercontrol1控件使用了mvvm数据绑定,usercontrol2也使用了mvvm数据绑定,则

以下是伪代码
<usercontrol2 datacontent="{Binding Viewmodel}">
<usercontrol1 tag="{Binding data}">
</usercontrol1>
</usercontrol2>

  usercontrol1是不能实现数据绑定的,个人猜测原因是usercontrol1内部已经做了mvvm绑定,usercontrol2不能数据绑定到usercontrol1

可借鉴的解决思路 http://www.cnblogs.com/DebugLZQ/archive/2013/06/26/3152922.html

本人则将usercontrol1的mvvm绑定放到usercontrol1的children里的子控件,比如grid

<usercontrol>
<grid datacontext="Binding mvvm">
</usercontrol>

  控件不允许双重绑定,避开就行。

问题二、mvvm 绑定textbox焦点丢失问题

<TextBoxName="UserNameText"Text="{Binding Path=Username, Mode=TwoWay}"HorizontalContentAlignment="Stretch"/>

此时焦点如果还在textbox上时,后台Username的值仍为NULL

解决办法:

<TextBoxName="UserNameText"Text="{Binding
Path=Username, UpdateSourceTrigger=PropertyChanged}"/>

UpdateSourceTrigger属性

问题三、Combox 下拉显示慢的问题

由于Item项多且每项显示内容多(itemtemplate复杂的话也会导致慢,比如要显示image之类的),导致使用ComboBox显示列表异常缓慢,这是由于ComboBox在展开列表时绘制了列表中的每一项,为了避免这个问题,我们可以使用VirtualizingStackPanel来代替ComboBox默认的项目面板StackPanel:

<ComboBox  VerticalAlignment="Top">
<ComboBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel />
</ItemsPanelTemplate>
</ComboBox.ItemsPanel>
</ComboBox>

  当然,应该不只是Combox有这样的问题,包括Treeview、listbox之类的控件都会有。

Reference:

关于WPF的ComboBox中Items太多而导致加载过慢的问题

深入解析WPF绑定

wpf mvvm使用问题集锦的更多相关文章

  1. WPF+MVVM数据绑定问题集锦

    1.  数据绑定的问题 在使用数据绑定时,一般使用 ObservableCollection<T> 类,不使用list列表集合,因为list数据发生变化时,UI界面不更新,而Observa ...

  2. WPF MVVM 验证

    WPF MVVM(Caliburn.Micro) 数据验证 书接前文 前文中仅是WPF验证中的一种,我们暂且称之为View端的验证(因为其验证规是写在Xaml文件中的). 还有一种我们称之为Model ...

  3. WPF MVVM初体验

    首先MVVM设计模式的结构, Views: 由Window/Page/UserControl等构成,通过DataBinding与ViewModels建立关联: ViewModels:由一组命令,可以绑 ...

  4. WPF MVVM实现TreeView

    今天有点时间,做个小例子WPF MVVM 实现TreeView 只是一个思路大家可以自由扩展 文章最后给出了源码下载地址 图1   图2     模版加上了一个checkbox,选中父类的checkb ...

  5. WPF/MVVM 快速开始指南(译)(转)

    WPF/MVVM 快速开始指南(译) 本篇文章是Barry Lapthorn创作的,感觉写得很好,翻译一下,做个纪念.由于英文水平实在太烂,所以翻译有错或者译得不好的地方请多指正.另外由于原文是针对W ...

  6. A WPF/MVVM Countdown Timer

    Introduction This article describes the construction of a countdown timer application written in C# ...

  7. 使用Prism提供的类实现WPF MVVM点餐Demo

    使用Prism提供的类实现WPF MVVM点餐Demo 由于公司开发的技术需求,近期在学习MVVM模式开发WPF应用程序.进过一段时间的学习,感受到:学习MVVM模式,最好的方法就是用MVVM做几个D ...

  8. WPF MVVM使用prism4.1搭建

    WPF MVVM使用prism4.1搭建 MVVM即Model-View-ViewModel,MVVM模式与MVP(Model-View-Presenter)模式相似,主要目的是分离视图(View)和 ...

  9. ViewModel从未如此清爽 - 轻量级WPF MVVM框架Stylet

    Stylet是我最近发现的一个WPF MVVM框架, 在博客园上搜了一下, 相关的文章基本没有, 所以写了这个入门的文章推荐给大家. Stylet是受Caliburn Micro项目的启发, 所以借鉴 ...

随机推荐

  1. webbrowser在不同的.netframework版本差异

    这几在做一个浏览器的自动化下载的工具,发现自己做的demo和做的项目代码运行不一致,代码就那么几行,拷贝过去为什么有些行为就不一样呢?经过分析发现原来有.net4.0和.net2.0中的webbrow ...

  2. 输入的不是有效的 Base-64 字符串,因为它包含非 Base-64 字符、两个以上的填充字符,或者填充字符间包含非法字符

    正常URL: http://localhost:16990/GoodsOrder/OrderRevoke.aspx??6G5lFi6xuoiLDhfOOOIkBYwy8RGpkfuza2gLlJrlT ...

  3. OpenJudge计算概论-鸡尾酒疗法

    /*===================================== 鸡尾酒疗法 总时间限制: 1000ms 内存限制: 65536kB 描述 鸡尾酒疗法,原指“高效抗逆转录病毒治疗”(HA ...

  4. Nagios 监控

    配置文件说明 文件名或目录名 用途 cgi.cfg 控制CGI访问的配置文件 nagios.cfg Nagios 主配置文件 resource.cfg 变量定义文件,又称为资源文件,在些文件中定义变量 ...

  5. 解决outlook不能显示鼠标问题

    今天发现打开outlook2010后, 没有鼠标显示. 解决方案: Control Panel -> Mouse Settings ->Pointer Options Uncheck th ...

  6. Python文件处理之文件写入方式与写缓存(三)

    Python的open的写入方式有: write(str):将str写入文件 writelines(sequence of strings):写多行到文件,参数为可迭代对象 首先来看下writelin ...

  7. Nginx Google 扩展

    安装配置详见: https://github.com/cuber/ngx_http_google_filter_module/blob/master/README.zh-CN.md tenginx详见 ...

  8. HackerRank "Morgan and a String"

    I saw the same sub-problem in LeetCode, and there exists a O(n) neat greedy solution: for _ in range ...

  9. 剑指offer系列42---二叉树深度

    [题目]输入一棵二叉树,求该树的深度. * 从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度. package com.exe9.offer; /** * [题 ...

  10. js setTimeout

    setTimeout用法 //每个0.5秒钟改变字体和背景颜色,字体一闪一闪的效果 var flag = 0; function start(){ var text = document.getEle ...