【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}"

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

猜你喜欢

转载自blog.csdn.net/songhuangong123/article/details/130253615