问题一、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. jquery mouseout事件错误(bug)

    移到子元素上时(例如,处在div中的图像),触发移出事件 (mouseout事件的一个常见错误). 解决办法是使用hover事件 在使用hover事件前,我抓耳挠腮的以为是margin或padding ...

  2. MySQL 用户与授权管理详解

    大纲 一.前言 二.创建用户并授权 三.GRANT语句的种类 四.撤权并删除用户 一.前言 做为Mysql数据库管理员管理用户账户,是一件很重要的事,指出哪个用户可以连接服务器,从哪里连接,连接后能做 ...

  3. show table status

    SHOW TABLE STATUS works likes SHOW TABLES, but provides a lot of information about each non-TEMPORAR ...

  4. Oracle数据库——表的创建与管理

    一.涉及内容 1.掌握使用OEM工具创建.修改和删除表. 2.掌握使用SQL语句创建.修改和删除表. 3.掌握使用SQL语句插入.修改和删除数据. 4.理解各种约束的作用,并能够使用OEM工具和SQL ...

  5. Open vSwitch

    https://github.com/openvswitch/ovs/blob/master/INSTALL.RHEL.md

  6. nedb nodejs 数据库学习

      // Type 1: In-memory only datastore (no need to load the database) var Datastore = require('nedb') ...

  7. Python报错UnicodeDecodeError: 'ascii' codec can't decode byte 0xe0 in position 0: ordinal not in range(128)

    解决办法: 在报错的页面添加代码: import sys reload(sys) sys.setdefaultencoding('utf8')

  8. java通过http调用服务

    package test; import java.io.IOException; import org.apache.commons.httpclient.Cookie; import org.ap ...

  9. 每日学习心得:找不到类型{0},它在 ServiceHost 指令中提供为 Service 特性值,或在配置元素...中提供,cellspacing、rowspacing属性

    2013-7-6 1.                找不到类型“WCFService.Service1”,它在 ServiceHost 指令中提供为 Service 特性值,或在配置元素 syste ...

  10. openstack(liberty): devstack之screen

    在devstack的stack.sh文件中,可以看到所有配置的service启动方式有两种,根据是否USE_SCREEN进行是在screen window中启动,还是直接起. 默认情况,USE_SCR ...