wpf mvvm使用问题集锦



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

?
1
2
3
4
5
以下是伪代码
<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

?
1
2
3
<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:

?
1
2
3
4
5
6
7
<ComboBox  VerticalAlignment= "Top" >
               <ComboBox.ItemsPanel>
                 <ItemsPanelTemplate>
                     <VirtualizingStackPanel />
                 </ItemsPanelTemplate>
             </ComboBox.ItemsPanel>
         </ComboBox>

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值