2013-03-09 57 views
1

我创建了一个组合框在XAML这样的:Combobox SelectedValue不起作用?

ComboBox x:Name="cbTest" SelectedValue="{Binding TestSpeed}" HorizontalAlignment="Left" Margin="0,10,0,0" Width="250" SelectionChanged="cbTest_SelectionChanged"/> 

而组合框充满了以下项目:

 for (int i = 1; i < 6; i++) 
      cbTest.Items.Add(i); 

我看到在下拉列表中的项目,但它并不显示SelectedValue我之前选择的内容。这是属性:

private short _testSpeed; 
public short TestSpeed 
{ 
    get 
    { 
     return _testSpeed; 
    } 
    set 
    { 
     _testSpeed= value; 
     NotifyPropertyChanged(); 
    } 
} 

这是当我改变SelectedChanged

_vm.TestSpeed = (short)Convert.ToInt16(cbTest.SelectedValue); 
项目

TestSpeed给了我正确的数据在调试,但结合了selectedValue不工作!?

+0

“我看到组合框中的项目,但它没有显示我选择之前的SelectedValue。” - 你是在代码中还是在代码属性中选择了它?你的意思是默认的'SelectedValue'? – Brian 2013-03-09 15:39:48

+0

嗨@布赖恩,绑定“SelectedValue =”{绑定TestSpeed“}应该得到”TestSpeed“属性..当我选择数字2,组合框说2,但是当我离开魅力和回报,然后它是空的..结合应该做的,是不是? – ExceptionGuy 2013-03-09 15:45:50

+0

你有没有试图改变在'_testSpeed'?含义抽象,宣布为“公共”而不是“私”? – Brian 2013-03-09 16:46:07

回答

0

在您的具体情况结合模式必须OneWayToSourceSelectedValue="{Binding Path=TestSpeed, Mode=OneWayToSource}。当TestSpeed是stringint即正常工作时,short - 不工作。我认为你需要编写特定的转换器来使用short或使用int并且不用担心

+0

您好,感谢您的答复。我试图使它一方式,并将其绑定像这样: <组合框X:名称= “cbTest” 的SelectedValue = “{绑定路径= TestSpeed,模式=单向}” 的Horizo​​ntalAlignment = “左” 保证金= “0,10,0,0” 宽度=“250”的SelectionChanged =“cbTest_SelectionChanged” /> 但它仍然没有工作.. – ExceptionGuy 2013-03-09 22:28:34

+0

我试图使它为“int”和它的工作了。我想我需要写一个转换器,用于使用短ÿ ES。看来,这个网络框架是不是最新的,我猜? – ExceptionGuy 2013-03-09 22:50:50

+0

我真的不知道,为什么短不默认转换为int或字符串=) – Frank59 2013-03-10 06:29:18

相关问题