У меня есть простой класс, который предоставляет государственные коды, как это:Двухсторонних связать выпадающий с простым строковым массивом
public class StateProvider
{
static string[] _codes = new string[]
{
"AL",
"AK",
...
};
public string[] GetAll()
{
return _codes;
}
}
Моего класс модели, который поддерживает мнение выглядит немного как это:
public class ProjectModel : ChangeNotifier
{
StateProvider _states = new StateProvider();
public ProjectModel()
{
Project = LoadProject();
}
ProjectEntity _project;
public ProjectEntity Project
{
get { return _project; }
set
{
_project = value;
FirePropertyChanged("Project");
}
}
public string[] States { get { return _states.GetAll(); } }
}
И мой ComboBox XAML выглядит следующим образом:
<ComboBox SelectedValue="{Binding Project.State, Mode=TwoWay}" SelectedValuePath="{Binding RelativeSource={RelativeSource Self}}" ItemsSource="{Binding States}" />
связывания работы из пользовательского интерфейса в сущности - если выбрать стат e из комбо, тогда значение передается объекту проекта, и я могу его сохранить. Однако, если я выключился и перезагрузился, значение кода состояния не привязывается от объекта к пользовательскому интерфейсу, а комбо ничего не отображает. Затем, конечно, последующее сохранение возвращает значение состояния объекта.
Я хочу, чтобы это было очень просто, так как я хочу отображать коды состояний и сохранять коды состояний (я не хочу отображать полное имя состояния). Поэтому я не хочу, чтобы я пытался создать класс State, обладающий свойствами Code и FullName, и избегать использования свойств SelectedValuePath и DisplayMemberPath в combobox.
Редактировать: Добавлен код, в котором ProjectModel изменяет уведомление. Обратите внимание, что класс ProjectEntity делает это тоже. Поверь мне это работает. Я оставил его, потому что он также наследуется от базового класса Entity, который меняет уведомление посредством отражения. Связывание TwoWay работает над всем, но для combobox.
Где свойство PropertyChangeNotification? –
Свойство PropertyChangeNotification реализовано в базовом классе. Я не включил абсолютно все для краткости. Я сделаю это немного яснее. – xanadont