背景
今天遇到一个草鸡奇葩的问题:
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}"
这样就可以了,不知为啥,懂的大佬指点一二。