Как сделать так, чтобы SelectedItem ComboBox отображался, даже если его нет в ItemsSource?
просто как простой пример ...
Предположим, у меня есть объект «Класс» со свойством «Учитель».
public class Class: INotifyPropertyChanged
{
private Individual _teacher
public Individual Teacher
{
get { return _teacher; }
set
{
teacher = value;
RaisePropertyChanged("Teacher");
}
}
...
}
В графическом интерфейсе «Ведение классов» есть поле со списком для выбора учителя, и я хочу, чтобы в нем отображались только активные люди. И я не хочу, чтобы пользователи могли вводить текст в произвольной форме в ComboBox. Для этого я привязываю ItemsSource к коллекции в моей ViewModel, которая включает только активных людей, и SelectedItem, привязанный к свойству Teacher моего объекта «Class».
public class MaintainClasses_ViewModel:INotifyPropertyChanged
{
private ObservableCollection<Individual> _activeIndividuals
= GetAllActiveIndividuals();
public ObservableCollection<Individual> ActiveIndividuals
{
get { return _activeIndividuals
}
public Class SelectedClass
{
get;
set;
}
}
с xaml для моего ComboBox ...
<ComboBox ItemsSource="{Binding ActiveIndividuals}"
SelectedItem="{Binding SelectedClass.Teacher}" />
Теперь предположим, что я открываю графический интерфейс «Ведение классов» для класса, в котором учитель, который уже был сохранен, теперь неактивен. Теперь ... Я хочу, чтобы в поле со списком отображались только активные люди - ПЛЮС учитель, который был выбран ранее (даже если они теперь неактивны, а НЕ в ItemsSource).
В настоящее время я нашел единственный способ сделать это - добавить Inactive Individual в коллекцию и вызвать событие PropertyChanged для коллекции. Однако мне бы очень хотелось заархивировать этот результат, не добавляя ничего в коллекцию. Предпочтительно какой-нибудь метод, использующий xaml, селекторы и / или преобразователи.
MenuItem
вместоComboBox
. HTH - person XAMlMAX   schedule 27.02.2015