Caliburn.Micro выпекла в соглашениях, поддерживающих ItemsControl
(например, ComboBox или ListBox) элементы управления, которые делают требуемый xaml в вас View минимальным.
Во-первых, у вас есть стандартное соглашение, в котором содержимое элементов управления будет связано со свойством ViewModel с тем же именем, что и элемент управления. В случае ItemsControl
свойство содержимого элемента управления имеет значение ItemsControl.ItemsSource
. И второе соглашение, которое вы получаете из коробки с Caliburn.Micro, заключается в том, что будет сделана попытка связать ItemsControl.SelectedItem
со свойством ViewModel, которое имеет сингулярное имя элемента управления, с «Active», «Selected» или « Ток "добавлен (см. ConventionManager
в источнике Caliburn.Micro).
Имея это в виду, вы можете достичь желаемого с помощью следующих элементов в вашем представлении:
<ComboBox x:Name="Strings"></ComboBox>
и в вашей ViewModel:
public BindableCollection<string> Strings
{
get
{
// silly example of the collection to bind to
return new BindableCollection<string>(
new string[]{ "one", "two", "three"});
}
}
private string _selectedString;
public string SelectedString
{
get { return _selectedString; }
set
{
_selectedString= value;
NotifyOfPropertyChange(() => SelectedString);
// and do anything else required on selection changed
}
}
Первое соглашение выбирает имя элемента управления («Strings») и связывает ComboBox.ItemsSource
со свойством ViewModel Strings
. Второе соглашение сначала объединяет «Strings» в «String» и добавляет «Selected» для получения свойства «SelectedString» для привязки ComboBox.SelectedItem
к.