Заполнение ComboBox из БД (Entity Framework)

529
17 февраля 2017, 00:38

Добрый день, есть Класс со свойствами и выборкой:

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>
Answer 1

Вам нужно только свойство ItemsSource для вашего Combobox

<ComboBox Name="role" ItemsSource="{Binding ItemsForRoles}" DisplayMemberPath="Name"
                  SelectedValuePath="Id"
                  SelectedValue="{Binding Path=Id}">
</ComboBox>

то что вы отдельно задаете ComboBoxItemперетирает ваш список ItemsSource

READ ALSO
Куда определить VM классы в патерне MVVM?

Куда определить VM классы в патерне MVVM?

Дело в том, что VM получается уж больно жирная, у меня в форме много графиков, везде в примерах под каждую V только один VM, на сколько правильно...

257
Вывод ромба в консоли C#

Вывод ромба в консоли C#

Вывожу ромб в консоли таким способом:

1043
Xamarin и ошибки компиляции

Xamarin и ошибки компиляции

Я пользуюсь Xamarin for VS2015Летом я установил Xamarin на личный компьютер

317
Ускорить процесс выборки из БД

Ускорить процесс выборки из БД

Есть два класса: сервер и матч

282