PropertyChanged возвращает нулевое значение после начальной привязки для данных - PullRequest
0 голосов
/ 22 декабря 2011

Мой PropertyChanged работает нормально для всех объектов, которые у меня есть на моей странице, которые не привязаны к датагридам, которые корректно работают с начальным связыванием, но затем теряют упомянутое связывание, когда я изменяю или сбрасываю связанное свойство.

Обратите внимание, что я пытался использовать ObservableCollection и получил тот же результат.

<DataGrid AutoGenerateColumns="False" Height="263" HorizontalAlignment="Left" Margin="50,120,0,0" ItemsSource="{Binding Files}" Name="dg_Display" VerticalAlignment="Top" Width="313">
        <DataGrid.Columns>
            <DataGridTextColumn Binding="{Binding FileName}" Header="File Name" />
            <DataGridTextColumn Binding="{Binding Date}" Header="Date" />
            <DataGridCheckBoxColumn Binding="{Binding Stack}" Header="Stack" />
        </DataGrid.Columns>
</DataGrid>
private List<StackModel.Display> m_files;
public List<StackModel.Display> Files
{
    get { return m_files ?? (m_files = StackModel.ListFiles(Path)); }
    set
    {
        m_files = value;
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs("Files"));
        }
    }
}
private DelegateCommand m_directory;
public ICommand DirectoryCommand { get { return m_directory ?? (m_directory = new DelegateCommand(Directory)); } }

private void Directory()
{
    Files = StackModel.ListFiles(Path);
}
public List<Display> ListFiles(string path)
{
    DirectoryInfo dir = new DirectoryInfo(path);
    FileInfo[] files = dir.GetFiles("*.xlsx");

    return files.Select(fileEntry => new Display {Date = fileEntry.LastWriteTime, FileName = fileEntry.Name, Stack = true}).ToList();
}

1 Ответ

2 голосов
/ 22 декабря 2011

Попробуйте вместо

public List<StackModel.Display> Files
{
   ..
}

используйте

public ObservableCollection<StackModel.Display> Files
{
   ..
}

Насколько я понял, ваша проблема в том, что при загрузке все данные, присутствующие в коллекции, загружаются правильно, но после, если вы очиститеэта коллекция, удалить или добавить новые элементы, изменения не влияют на пользовательский интерфейс.

ObservableCollection должно решить эту проблему для вас.

Должно работать ..

...