Не bind`ся связанные данные
XAML:
<Grid Grid.Column="0">
<ListBox ItemsSource="{Binding Pupils}" SelectedItem="{Binding SelectedPupil}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical" >
<TextBlock Margin="3" Text="{Binding Path=FirstName}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
<Grid Grid.Column="1">
<StackPanel Orientation="Vertical" DataContext="{Binding SelectedPupil}">
<TextBlock Text="{Binding LastName,UpdateSourceTrigger=PropertyChanged}"/>
<TextBlock Text="{Binding FirstName,UpdateSourceTrigger=PropertyChanged}"/>
<TextBlock Text="{Binding MiddleName,UpdateSourceTrigger=PropertyChanged}"/>
<TextBlock Text="{Binding BirthDate,UpdateSourceTrigger=PropertyChanged}"/>
<TextBlock Text="{Binding Gender,UpdateSourceTrigger=PropertyChanged}"/>
<TextBlock Text="{Binding PupilParents.LastName,UpdateSourceTrigger=PropertyChanged}" />
<TextBlock Text="{Binding PupilParents.FirstName,UpdateSourceTrigger=PropertyChanged}" />
</StackPanel>
</Grid>
Models:
class Human:INotifyPropertyChanged
{
private string middleName;
private string lastName;
private string firstName;
private string gender;
private DateTime? birthDate;
private string homeAdress;
[Key]
public int ID { get; set; }
public string MiddleName
{
get { return middleName; }
set
{
middleName = value;
OnPropertyChanged();
}
}
public string LastName
{
get { return lastName; }
set
{
lastName = value;
OnPropertyChanged();
}
}
public string FirstName
{
get
{
return firstName;
}
set
{
firstName = value;
OnPropertyChanged();
}
}
public string Gender
{
get
{
return gender;
}
set
{
gender = value;
OnPropertyChanged();
}
}
[CanBeNull]
public DateTime? BirthDate
{
get
{
return birthDate;
}
set
{
birthDate = value;
OnPropertyChanged();
}
}
public string HomeAdress
{
get { return homeAdress; }
set
{
homeAdress = value;
OnPropertyChanged();
}
}
public event PropertyChangedEventHandler PropertyChanged;
[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = "")
{
var handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
}
class Pupil:Human
{
private DateTime? dateOfAdmission;
private DateTime? dateOfGraduation;
private string phoneNumber;
[CanBeNull]
public DateTime? DateOfAdmission
{
get
{
return dateOfAdmission;
}
set
{
dateOfAdmission = value;
OnPropertyChanged();
}
}
[CanBeNull]
public DateTime? DateOfGraduation
{
get
{
return dateOfGraduation;
}
set { dateOfGraduation = value;
OnPropertyChanged(); }
}
public string PhoneNumber
{
get { return phoneNumber; }
set
{
phoneNumber = value;
OnPropertyChanged();
}
}
public ObservableCollection<PupilParent> PupilParents { get; set; }
public ObservableCollection<PupilTeacher> PupilTeachers { get; set; }
public ObservableCollection<Subject> Subjects { get; set; }
public ObservableCollection<PupilGroup> PupilGroups { get; set; }
}
class Parent:Human
{
public ObservableCollection<PupilParent> PupilParents { get; set; }
}
VIEW:
class PupilViewModel:INotifyPropertyChanged
{
SchoolModel _db = new SchoolModel();
public ObservableCollection<Pupil> Pupils { get; set; }
private Pupil selectedPupil;
public Pupil SelectedPupil
{
get
{
return selectedPupil;
}
set
{
selectedPupil = value;
OnPropertyChanged();
}
}
public PupilViewModel()
{
Pupils = new ObservableCollection<Pupil>(_db.Pupils.Include(b=>b.PupilParents ).ThenInclude(b=>b.Parent).Include(b=>b.PupilGroups).ThenInclude(b=>b.Group));
}
public event PropertyChangedEventHandler PropertyChanged;
[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = "")
{
var handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
}
MainWindow:
public MainWindow()
{
InitializeComponent();
//using (var _db = new SchoolModel())
//{
// var pupil = new Pupil()
// {
// LastName = "Pupil1",FirstName = "Pupil1",MiddleName = "Pupil1Middlename",BirthDate = DateTime.Today,DateOfAdmission = DateTime.Today,DateOfGraduation = DateTime.Today,Gender = "Male",
// PupilTeachers = new ObservableCollection<PupilTeacher>
// {
// new PupilTeacher()
// {
// Teacher = new Teacher(){FirstName = "Teacher1FirstName" }
// }
// },
// PupilParents = new ObservableCollection<PupilParent>
// {
// new PupilParent()
// {
// Parent = new Parent(){FirstName = "Parent1FIRSTNAME",LastName = "Parent1LASTNAME",BirthDate = DateTime.Today,MiddleName = "Name"}
// }
// },
// PupilGroups = new ObservableCollection<PupilGroup>
// {
// new PupilGroup()
// {
// Group = new Group(){GroupName = "MADGROUP"}
// }
// }
// };
// _db.Pupils.Add(pupil);
// _db.SaveChanges();
//}
DataContext = new PupilViewModel();
}
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Нужно сделать так чтобы функция в js брала рандомно какое-то из имён в перечне, который находится уже изначально в текстовом файлеИ после того...
Мне приходят данные и как проверить если есть в них поле friendslist или нет?
Отправляю на nodejs запрос ( отправка формы ) , в ответ я получаю обычный HTML
Есть такая страничка со вкладками, открываешь каждую - она грузится секунд за 10, причем сам запрос может отработать довольно быстро, а вот...