【wpf踩坑日记】搞错了,眼睛问题(:))
背景
今天遇到一个草鸡奇葩的问题:
其实看错了,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}"
这样就可以了,不知为啥,懂的大佬指点一二。