我的问题是,在组合框中选择一个项目后,组合框的第一项或“默认”项保持为空,但是如果单击组合框,则下面显示的值是可选的,等等。但是我希望单击该组合以显示在“默认/第一”位置。
到目前为止我尝试过的事情
XAML:
<ComboBox Margin="55,0,0,10" Height="20" Width="145" VerticalAlignment="Center" HorizontalAlignment="Left"
ItemsSource="{Binding TabItems, Source={StaticResource MainWindowViewModelRefactored}, Mode=TwoWay}"
SelectedItem="{Binding SelectedItem, Source={StaticResource MainWindowViewModelRefactored}, Mode=TwoWay}"
DisplayMemberPath="Header">
</ComboBox>
属性:
public TabItem SelectedItem {
get {
return _selectedItem;
}
set {
UpdateTCVCollection(value);
_selectedItem = value;
NotifyPropertyChanged("SelectedItem");
}
}
如果我打开组合框,则选中的项目将突出显示,但我也希望在关闭组合框时将其显示在“第一位”。
答案 0 :(得分:0)
您可以在索引更改后添加一个方法,然后删除用户选择的项目并在开头添加它。
我将Sorted
的值设置为false
,因为那样一来,您选择的值将不会在ComboBox中重新组织。
private void ComboBox1_SelectedIndexChanged(object sender, EventArgs e) {
RadItem selectedItem = ComboBox1.SelectedItem as RadItem;
if (selectedItem != null) {
ComboBox1.Items.Remove(selectedItem);
ComboBox1.Items.Sorted = true;
ComboBox1.Items.Sorted = false;
ComboBox1.Items.Insert(0, selectedItem);
ComboBox1.Text = selectedItem.Text;
}
}
答案 1 :(得分:0)
将UpdateSourceTrigger添加到您的组合框。
UpdateSourceTrigger=PropertyChanged
示例:
<ComboBox Margin="55,0,0,10" Height="20" Width="145" VerticalAlignment="Center" HorizontalAlignment="Left"
ItemsSource="{Binding TabItems, Source={StaticResource MainWindowViewModelRefactored}, Mode=TwoWay}"
SelectedItem="{Binding SelectedItem, Source={StaticResource MainWindowViewModelRefactored}, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
DisplayMemberPath="Header">
</ComboBox>
那应该可以帮助您解决问题。
问候