> 文章列表 > 【wpf踩坑日记】搞错了,眼睛问题(:))

【wpf踩坑日记】搞错了,眼睛问题(:))

【wpf踩坑日记】搞错了,眼睛问题(:))

背景

今天遇到一个草鸡奇葩的问题:

ComboBox  选择时 没有触发绑定属性的set。

其实看错了,Mode写出OneWay,应该是TowWay。

不然是会触发set的。兄弟们不用往下看了。。。。。

哎,有的时候就会碰到这种情况,我还研究了几个小时。

绑定的代码如下:

private int _isAdjustment;public int isAdjustment
{get { return _isAdjustment; }set {SetProperty(ref _isAdjustment, value); }
}

 切换ComboBox  的时候,不会触发set,

但是ComboBox上方的TextBox都没事问题(修改数据是可以触发)

一开始以为是 int 的问题,把int 改成 string 还是不行。

但是,我把ComboBox放到ItemsControl外面,然后再搞个相同的isAdjustment属性,发现也是可以的。

那问题就出在,ComboBox在ItemsControl里面是表现有些不同!

解决方案

这样写,可以了:
<hc:ComboBox Margin="10,0,0,0" Width="200"hc:TitleElement.Title="isAdjustment:" hc:TitleElement.TitlePlacement="Left"hc:TitleElement.TitleWidth="100"SelectedValuePath="Content" Text="{Binding isAdjustment}"SelectedValue="{Binding isAdjustment, Mode=OneWay}"><ComboBoxItem>0</ComboBoxItem><ComboBoxItem>1</ComboBoxItem>
</hc:ComboBox>

唯一的不同是我加上一句:

Text="{Binding isAdjustment}"

这样就可以了,不知为啥,懂的大佬指点一二。