C# WPF DataGrid RowDetails не обновляется с помощью MVVM Caliburn.Micro - PullRequest
0 голосов
/ 10 июля 2020

Попытка обновить «Подробности» 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, похоже, тоже не помогает.

Любая помощь или предложения будут очень благодарны.

...