Добрый день, есть Класс со свойствами и выборкой:
public partial class Register : Window
{
public int Id { get; set; }
public string Name { get; set; }
public ObservableCollection<Roles> ItemsForRoles { get; set; }
public Register()
{
DbModelContainer db = new DbModelContainer();
ObservableCollection<Roles> ItemsForRoles = new ObservableCollection<Roles>();
var query = db.RolesSet.ToList();
foreach (var roles in query)
{
ItemsForRoles.Add(
new Roles { Id = roles.Id, Name = roles.Name }
);
}
}
}
И ComboBox:
<ComboBox Name="role" ItemsSource="{Binding ItemsForRoles}">
<ComboBoxItem Content="{Binding Name}"></ComboBoxItem>
</ComboBox>
Подскажите, пожалуйста, как в XAML коде правильно сделать привязку данных на ComboBox, так что-бы выводились все записи, а не одна. Нужно вывести из БД записи в этот ComboBox и передаваемым параметром сделать Id, а не Name.
Решение вопроса из последних комментариев (установка IsEnabled=false первому(выбранному) итему):
<ComboBox.ItemContainerStyle>
<Style TargetType="ComboBoxItem">
<Style.Triggers>
<DataTrigger Binding="{Binding Id}" Value="-1">
<Setter Property="IsEnabled" Value="False"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ComboBox.ItemContainerStyle>
Вам нужно только свойство ItemsSource для вашего Combobox
<ComboBox Name="role" ItemsSource="{Binding ItemsForRoles}" DisplayMemberPath="Name"
SelectedValuePath="Id"
SelectedValue="{Binding Path=Id}">
</ComboBox>
то что вы отдельно задаете ComboBoxItemперетирает ваш список ItemsSource
Сборка персонального компьютера от Artline: умный выбор для современных пользователей