【问题标题】:Combobox SelectedValue isn't working?组合框 SelectedValue 不起作用?
【发布时间】:2013-03-10 00:51:00
【问题描述】:

我在 xaml 中创建了一个组合框,如下所示:

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

Combobox 中填充了以下项目:

        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 绑定不起作用!?

【问题讨论】:

  • "我看到组合框中的项目,但它没有显示我之前选择的 SelectedValue。" - 您是在代码中还是在代码的属性中选择它?您是指默认的“SelectedValue”吗?
  • 嗨@Brian,绑定“SelectedValue="{Binding TestSpeed"} 应该获得“TestSpeed”属性。当我选择数字 2 时,组合框显示 2,但是当我离开魅力和return 然后它又是空的。绑定应该这样做,不是吗?
  • 您是否尝试过更改_testSpeed 的抽象?意思是,将其声明为“公共”而不是“私有”?

标签: c# combobox microsoft-metro


【解决方案1】:

在您的情况下,绑定模式必须是 OneWayToSourceSelectedValue="{Binding Path=TestSpeed, Mode=OneWayToSource} 。当 TestSpeed 为 stringint 时有效,当 short - 无效时。我认为您需要为使用short 或使用int 编写特定的转换器,不要担心

【讨论】:

  • 您好,感谢您的回复。我试图使它成为一种方式并像这样绑定它: 但是还是不行..
  • 我尝试将其设置为“int”,现在它正在工作。我想我需要编写一个转换器来使用短是的。我猜这个网络框架似乎不是最新的?
  • 我真的不知道,为什么 short 默认不转换为 int 或 string.=)
  • 是的,也许他们这样做是为了让它不那么受欢迎,并促使人们使用 int 和 string ;D
猜你喜欢
  • 1970-01-01
  • 2012-07-14
  • 2013-02-23
  • 2017-08-20
  • 1970-01-01
  • 2011-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多