Возмем следующий класс:
class Number
{
public int N { get; set; }
public String Name { get; set; }
public override string ToString()
{
return String.Format("{0} is {1}", N, Name);
}
public Number(int n, String name)
{
N = n;
Name = name;
}
}
Создадим окно, в качестве DataContext подсунем коллекцию из экземплярв класса Number. Конструктор окна получился такой
public MainWindow()
{
InitializeComponent();
DataContext = new Number[]{new Number(1, @"one"),
new Number(2, @"two"),
new Number(3, @"three"),
new Number(4, @"four"),
new Number(5, @"five")};
}
А вот сама разметка, для интереса добавил отображение полей SelectedValue и SelectedItem.
<StackPanel>
<ListBox ItemsSource="{Binding}" SelectedValuePath="N" x:Name="list" Padding="2"/>
<StackPanel Margin="3" Orientation="Horizontal">
<Label Content="SelectedValue"/>
<TextBox Text="{Binding SelectedValue, UpdateSourceTrigger=PropertyChanged, ElementName=list}"/>
</StackPanel>
<StackPanel Margin="3" Orientation="Horizontal">
<Label Content=" SelectedItem"/>
<Label Content="{Binding SelectedItem, ElementName=list}"/>
</StackPanel>
</StackPanel>
Окошко выглядит такSelectedItem возвращает выбранный объект(типа Number), а SelectedValue возвращает значение SelectedValue.N (типа int). Кроме того, каждый объект в ListBox ассоциируется со значением своего поля N. Задав значение SelectedValue будет выбран объект у которого свойство N равно SelectedValue, если таких объектов окажется несколько, в качестве SelectedItem будет установлен первый по порядку. Исходники здесь.
Комментариев нет:
Отправить комментарий