Позвольте мне сначала описать мою цель: я создал объект с 3 свойствами: начало, конец и время. Я создал ObservableCollection из 8 из этих свойств, поэтому он выглядит так:
//C#
internal class MyObjects : ObservableCollection<MyObjectSetting>
{
public MyObjects()
: base()
{
Add(new MyObjectSetting(
start1,
end1,
time1);
Add(new MyObjectSetting(
start2,
end2,
time2);
(etc)
}
}
Я хотел бы иметь 3 ComboBox, которые привязываются к отдельным свойствам, перечисленным в этих 8 объектах, поэтому ComboBoxes будет выглядеть как "start1, start2, ... start8", "end1, end2, ... end8".
Следующий код успешно связывает ComboBox с самими объектами, но я зашел в тупик относительно того, как получить доступ к отдельным свойствам каждого из комбинированных списков.
// WPF
<Grid>
<Grid.Resources>
<local:MyObjects x:Key="myMyObjects"/>
</Grid.Resources>
<ComboBox x:Name="cbxStartPosition"
Grid.Row="0"
Grid.Column="3"
ItemsSource="{Binding Source={StaticResource myMyObjects}}"
>
</Grid>
Может кто-нибудь помочь мне определить, как привязать свойства объектов, хранящихся в коллекции, к отображаемому значению, отображаемому в ComboBox?
Я попытался добавить DataTemplate для ListBox, исследуя образец MultiBinding на MSDN здесь , как показано ниже, но получаю ошибку ниже:
//WPF
<DataTemplate x:Key="StartPositionTemplate">
<ListBox>
<MultiBinding Converter="{StaticResource myNameConverter}">
<Binding Path="FirstName"/>
<Binding Path="LastName"/>
</MultiBinding>
</ListBoxItem>
</DataTemplate>
Ошибка 32 Невозможно добавить значение типа «DataTemplate» в коллекцию или словарь типа «UIElementCollection».
Эта ошибка была вызвана тем, что my не было в разделе XAML. HTH люди в будущем. Использование DataTemplate было способом, согласно ответу ниже.
Если DataTemplate не годится, знает ли кто-нибудь, что может быть лучше для этого?