Попытка обновить «Подробности» DataGrid
RowDetailsTemplate
в «Людях» DataGrid
(Совершая какие-то сумасшедшие Начало вещи!).
Коллекция обновляется правильно с NotifyOfPropertyChange()
, но, похоже, он не обновляет строку в DataGrid
.
Header
«Информация об адресе» присутствует в RowDetailsTemplate
, но строки не отображаются в этом DataGrid
.
Модели:
public class PersonModel
{
public string FirstName{ get; set; }
public string LastName{ get; set; }
}
public class DetailsModel
{
public string Address{ get; set; }
}
ViewModel:
private ObservableCollection<PersonModel> _people;
private ObservableCollection<PersonModel> People
{
get { return _people; }
set
{
_people = value;
NotifyOfPropertyChange(() => People);
}
}
private ObservableCollection<DetailsModel> _details;
private ObservableCollection<DetailsModel> Details
{
get { return _details; }
set
{
_details = value;
NotifyOfPropertyChange(() => Details);
}
}
public void SetRowDetail(PeopleModel selectedPerson)
{
PeopleModel person = selectedPerson;
DetailsModel detailInfo = new DetailsModel();
detailInfo.address = GetAddr(person.AddressIndex);
Details = new ObservableCollection<DetailsModel>() {detailInfo};
}
View:
<DataGrid x:Name="People"
Grid.Row="1"
cm:Message.Attach="[Event MouseUp]=[Action SetRowDetail($this)]">
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<StackPanel>
<TextBox Text="Person Details" />
<DataGrid x:Name="Details"
ItemsSource="{Binding TakeoutCoefficients}">
<DataGrid.Columns>
<DataGridTextColumn Header="Address Info"
Binding="{Binding Address, UpdateSourceTrigger=PropertyChanged}" />
</DataGrid.Columns>
</DataGrid>
</StackPanel>
</DataTemplate>
</DataGrid.RowDetailsTemplate>
</DataGrid>
Я бы хотел добиться это без необходимости извлекать RowDetailsTemplate
.
Пробовал BindableCollection и ItemsSource, похоже, тоже не помогает.
Любая помощь или предложения будут очень благодарны.