C.Rath Ответов: 1

Wpf: привязка datagrid не работает


Привет,

у меня есть проблема с привязкой данных datagrid в WPF.

моя модель:
public class CheckLogModel : ObservableObject
{
    public int Id { get; set; }
    public DateTime TimeStamp { get; set; }
    public decimal MandantNr { get; set; }
    public decimal PrintJobNr { get; set; }
    public decimal HgoNr { get; set; }
    public decimal GoNr { get; set; }
}

MainviewModel:
private ObservableCollection<CheckLogModel> _checkLogEntries = new ObservableCollection<CheckLogModel>();

public ObservableCollection<CheckLogModel> CheckLogEntries {
    get {
        return _checkLogEntries;
    }
    set {
        if (value == _checkLogEntries) return;
        _checkLogEntries = value;
        RaisePropertyChangedEvent("CheckLogEntriesChanged");
    }
}
private void SearchWqButtonClick(object sender) {
        var searchModel = new SearchCheckLogModel {
            MandantNr = _selectedMandant.Nummer,
            GoNr = Converter.ConvertToDecimal(_goNr),
            HgoNr = Converter.ConvertToDecimal(_hgoNr),
            PrintJobNr = Converter.ConvertToDecimal(_printjobNr),
            Id = Converter.ConvertToInt(_id)
        };

        if (searchModel.IsAllCriteriasEmpty()) {
            //Fehler ausgeben
            return;
        }
        //Search
        CheckLogEntries = CheckLogRepository.GetCheckLogEntities(searchModel);
    }
}

Главное окно XAML:
DataContext="{Binding Main, Source={StaticResource Locator}}" 

<DataGrid ItemsSource="{Binding CheckLogEntries}"

          Grid.Column="1" 

          Grid.Row="0"

          AutoGenerateColumns="true"

          >
</DataGrid>

Приложение.язык XAML:
<application.resources>
    <resourcedictionary>
      <vm:viewmodellocator x:key="Locator" 

="" d:isdatasource="True" xmlns:vm="clr-namespace:NetigateLogViewer.ViewModel">


Что я уже пробовал:

При выполнении программы я получаю правильный результирующий набор "CheckLogEntries" из статического метода "CheckLogRepository.GetCheckLogEntities", когда я выполняю метод "SearchWqButtonClick" плюс правильное выполнение установщика свойств, так что свойство должно быть установлено.

Но строки не отображаются в datagrid главного окна.
Я предполагаю, что с привязкой что-то не так, но понятия не имею, что это такое...

Любая помощь будет оценена по достоинству?

1 Ответов

Рейтинг:
9

Richard Deeming

Цитата:
RaisePropertyChangedEvent("CheckLogEntriesChanged");
Похоже, это хорошее место для начала. Ваша собственность называется CheckLogEntries, но вы вызываете событие "свойство изменено" для свойства под названием CheckLogEntriesChanged.

Измените эту строку, чтобы использовать правильное имя свойства. Вы можете использовать имя[^] чтобы убедиться, что вы получите правильное имя:
RaisePropertyChangedEvent(nameof(CheckLogEntries));


C.Rath

Спасибо работает отлично