组合框不显示所选项目,如果我选择第一项

时间:2015-07-09 07:31:16

标签: c# combobox windows-runtime windows-phone-8.1

我正在研究winrt phone 8.1项目。

我有这个组合框。

<ComboBox PickerFlyoutBase.Title=" "  Name="ModelComboBox" x:Uid="ModelComboBox"  DisplayMemberPath="vcModel" IsEnabled="False" />

只需将此代码用于组合框的选择更改事件,该组合框位于该组合框之上。

    private void MakeComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        if (MakeComboBox.SelectedValue != null)
        {
            List<stbModel> Model = CrudOperations.GetModelById((MakeComboBox.SelectedValue as stbMake).siMakeId);
            if (Model != null && Model.Count > 0)
            {
                ModelComboBox.IsEnabled = true;
                ModelComboBox.ItemsSource = Model.OrderBy(x => x.vcModel);
                ModelComboBox.SelectedIndex = 0;
            }
        }
    }

现在的问题是,我不知道为什么每当我从组合框中选择第一项时,它在组合框中都没有显示任何内容,而如果我选择除了第一项之外的任何项目,那么它将在组合框中显示。

如果需要,我可以附上截图。

2 个答案:

答案 0 :(得分:2)

当使用MVVM时,直接修改SelectedIndex属性会破坏绑定的部分功能。直接设置SelectedItem属性具有相同的问题。

这很糟糕,应该由框架记录,阻止或适当支持。

然而,唯一已知的工作解决方案,不是一个丑陋的黑客,是通过ItemsSource对象绑定所选项目:Binding ComboBox SelectedItem using MVVM

答案 1 :(得分:0)

您是否尝试过设置SelectedIndex的值?默认情况下,选择第一项应为-1。

更改 来自:ModelCombox.SelectedIndex = 0;

To:ModelCombox.SelectedIndex = -1;