Здравствуйте! Пишу простое приложение для отображения, добавления и удаления компаний и их пользователей, и никак не могу понять, как привязать данные из Entity к ComboBox. Имеется следующая модель данных:
class Company
{
public Company()
{
this.Users = new ObservableCollection<User>();
}
public int Id { get; set; }
public string Name { get; set; }
public string ContractStatus { get; set; } // 0 = не заключён, 1 = заключён, 2 = расторгнут
public virtual ObservableCollection<User> Users { get; private set; }
}
class User
{
public int Id { get; set; }
public string Name { get; set; }
public string Login { get; set; }
public string Password { get; set; } // identity?
public int CompanyId { get; set; }
public virtual Company Company { get; set; }
}
class RiKContext : DbContext
{
public RiKContext() : base("RiKDb") { }
public DbSet<User> Users { get; set; }
public DbSet<Company> Companies { get; set; }
}
В ComboBox на форме добавления/редактирования должно отображаться имя компании (если редактируем уже существующего пользователя -- в ComboBox отображается имя компании, к которой он в текущий момент привязан), а выбираться, соответственно, её ID
.
Код формы XAML:
<Window x:Class="TestTask_mscw.UserAddOrEdit"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:TestTask_mscw"
mc:Ignorable="d"
Title="UserAddOrEdit" Height="300" Width="300" Loaded="Window_Loaded">
<Window.Resources>
<CollectionViewSource x:Key="companyViewSource" d:DesignSource="{d:DesignInstance {x:Type local:Company}, CreateList=True}"/>
</Window.Resources>
<Grid>
<Label Content="Имя" HorizontalAlignment="Left" Margin="27,24,0,0" VerticalAlignment="Top"/>
<Label Content="Логин" HorizontalAlignment="Left" Margin="27,97,0,0" VerticalAlignment="Top"/>
<Label Content="Пароль" HorizontalAlignment="Left" Margin="27,133,0,0" VerticalAlignment="Top"/>
<TextBox x:Name="UserNameTextBox" HorizontalAlignment="Left" Height="23" Margin="162,24,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/>
<TextBox x:Name="LoginTextBox" HorizontalAlignment="Left" Height="23" Margin="162,101,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/>
<PasswordBox x:Name="PasswordPasswordBox" HorizontalAlignment="Left" Margin="162,141,0,0" VerticalAlignment="Top" Width="120"/>
<Label Content="Подтвердите пароль" HorizontalAlignment="Left" Margin="27,165,0,0" VerticalAlignment="Top"/>
<PasswordBox x:Name="ConfirmPasswordPasswordBox" HorizontalAlignment="Left" Margin="162,173,0,0" VerticalAlignment="Top" Width="120"/>
<Button x:Name="UserOKButton" Content="ОК" HorizontalAlignment="Left" Margin="27,229,0,0" VerticalAlignment="Top" Width="75"/>
<Button x:Name="UserCancelButton" Content="Отмена" HorizontalAlignment="Left" Margin="207,229,0,0" VerticalAlignment="Top" Width="75"/>
<Label Content="Компания" HorizontalAlignment="Left" Margin="27,58,0,0" VerticalAlignment="Top"/>
<ComboBox x:Name="CompanyComboBox" HorizontalAlignment="Left" Margin="162,62,0,0" VerticalAlignment="Top" Width="120"
ItemsSource="{Binding Source={StaticResource companyViewSource}}" DisplayMemberPath="Name" SelectedValue="Id"
SelectedValuePath="{Binding Path={???}}"/>
</Grid>
</Window>
Файл xaml.cs:
public partial class UserAddOrEdit : Window
{
RiKContext db;
public UserAddOrEdit()
{
db = new RiKContext();
db.Companies.Load();
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
System.Windows.Data.CollectionViewSource companyViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("companyViewSource")));
}
}
}
Понимаю, что решение лежит где-то на поверхности, но никак не могу к нему прийти.
Буду благодарен за любую помощь!
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Делаю свою реализацию коллекции на основе массиваНаследуюсь от шаблонного интерфейса Collection
Как вставить данные в поля страницы и их отсабмитить, но без селениума
This question already has an answer here:
Начал работать из стим API, могу получить полный список трейдов (входящих и тех что от меня), но вот как принимать их разобраться не могуНашел...