none
可编辑状态下的ComboBox的问题 RRS feed

  • 问题

  • 当ComboBox创建Items后,例如:ComboBoxItem Content=“20” 。。。

    运行时:选中此项后Text显示:"20"  接着你将"0"删除,Text显示:"2" ,然后再次打开下拉列表选择刚才选中的"20",Text的数值依然不变是:"2"

                如果按照上面的顺序,改写成其他值,就可以变换。这是什么呢?

    2012年10月25日 2:09

答案

  • 因为你把0删除之后 并没有改变SelectedItem,所以这个时候还是你再次选择20 对ComboBox是没有任何影响的, 因为你已经选中那个Item了

    但是当你改变20 为26或者其他的, ComboBox就不会选中20那个Item了 当你再次点20的item的时候,重新选择 所以会变。

    这个是跟IsTextSearchEnabled属性有关系的,如果你设置成false 所有的输入都不会变。


    Sheldon _Xiao[MSFT]
    MSDN Community Support | Feedback to us
    Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 仁虎 2012年10月26日 11:25
    • 取消答案标记 仁虎 2012年10月26日 11:25
    • 已建议为答案 Sheldon _XiaoModerator 2012年10月29日 2:35
    • 取消建议作为答案 仁虎 2012年10月29日 3:54
    • 已标记为答案 仁虎 2012年10月29日 3:54
    2012年10月26日 9:56
    版主

全部回复

  • 因为你把0删除之后 并没有改变SelectedItem,所以这个时候还是你再次选择20 对ComboBox是没有任何影响的, 因为你已经选中那个Item了

    但是当你改变20 为26或者其他的, ComboBox就不会选中20那个Item了 当你再次点20的item的时候,重新选择 所以会变。

    这个是跟IsTextSearchEnabled属性有关系的,如果你设置成false 所有的输入都不会变。


    Sheldon _Xiao[MSFT]
    MSDN Community Support | Feedback to us
    Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 仁虎 2012年10月26日 11:25
    • 取消答案标记 仁虎 2012年10月26日 11:25
    • 已建议为答案 Sheldon _XiaoModerator 2012年10月29日 2:35
    • 取消建议作为答案 仁虎 2012年10月29日 3:54
    • 已标记为答案 仁虎 2012年10月29日 3:54
    2012年10月26日 9:56
    版主
  • 我们做个测试,

    <ComboBox Name="C1" IsEditable="True" IsTextSearchEabled="True">
     <ComboBoxItem Content="20"/>
     <ComboBoxItem Content="30"/>
    </ComboBox>
    <ComboBox Name="C2" IsEditable="True" IsTextSearchEabled="False">
     <ComboBoxItem Content="20"/>
     <ComboBoxItem Content="30"/>
    </ComboBox>

    1。先在Text中输入数字2,再打开下拉列表选择项:20 ,C1的Text内容还是2,C2的Text变成了20

    2。先在Text中输入数字21,再打开下拉列表选择项:20 ,C1与C2的Text内容都顺利变成了20

    3。先打开下拉列表选择项:20,然后把Text中的20改成2,然后再打开下拉列表选择项20,Text内容都依然是2没有变成20

    4。先打开下拉列表选择项:20,然后把Text中的20改成21,然后再打开下拉列表选择项20,C1的Text内容变成20,C2的Text依然是21

    以上测试,两项都存在问题。我的意思就是无论Text中的值是2还是21选择SelectedItem的项那么Txte中的内容就应该顺理成章的变成对应的值。

    然而,以上测试可以显示出Text中的内容如果与Item中的第一个数值相同那么就会产生上面测试中出现的奇怪现象。

    如何解释这种现象?如何使Text与SelectedItemtt同步呢?


    • 已编辑 仁虎 2012年10月26日 12:54 修改
    2012年10月26日 12:11
  • 我在上一个回复中已经告诉你 原因是什么了

    说了 这个是一个自动检索 不选中Item的行为。

    -->1。先在Text中输入数字2,再打开下拉列表选择项:20 ,C1的Text内容还是2,C2的Text变成了20

    还是2的原因是你输入的是2,自动检索开着的 那么他不会改变选中的Item,没有改变选中Item 所以text值没有变化。如果你输入的2导致了selecteditem 变化 那么text值就会改变。

    你自己好好理解一下, 实在理解不了 我建议你注册一个selectedchanged事件,然后在handler里面打个断点, 看看什么时候出触发 什么时候没触发


    Sheldon _Xiao[MSFT]
    MSDN Community Support | Feedback to us
    Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.


    2012年10月29日 2:34
    版主