我正在研究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;
}
}
}
现在的问题是,我不知道为什么每当我从组合框中选择第一项时,它在组合框中都没有显示任何内容,而如果我选择除了第一项之外的任何项目,那么它将在组合框中显示。
如果需要,我可以附上截图。
答案 0 :(得分:2)
当使用MVVM时,直接修改SelectedIndex
属性会破坏绑定的部分功能。直接设置SelectedItem
属性具有相同的问题。
这很糟糕,应该由框架记录,阻止或适当支持。
然而,唯一已知的工作解决方案,不是一个丑陋的黑客,是通过ItemsSource
对象绑定所选项目:Binding ComboBox SelectedItem using MVVM
答案 1 :(得分:0)
您是否尝试过设置SelectedIndex的值?默认情况下,选择第一项应为-1。
更改 来自:ModelCombox.SelectedIndex = 0;
To:ModelCombox.SelectedIndex = -1;