Как я могу обеспечить обратную связь с пользователем на основе измененного свойства даже
Бойз и герлз,
Я вызываю процедуру для обновления БД изнутри OnPropertyChanged(propertyname) вот так...
protected void OnPropertyChanged(string name) { // Some TEMP employee property changed const string PROCNAME = "OnPropertyChanged"; try { PropertyChangedEventHandler handler = PropertyChanged; if (handler != null) { handler(this, new PropertyChangedEventArgs(name)); // Call routine to perist changes to DB tempMethods.UpdateTempFromCollection(this, name); } } catch (Exception ex) { ProgLog.Log(ex.Message, PROCNAME, MODNAME); } }
Теперь мне нужно вернуть диспозицию обратно в окно WPF, но поскольку обновление БД начинается с вызова через INotifyPropertyChanged на свойство внутри коллекции, неясно, как перехватить диспозицию обновления БД и вернуть обратную связь пользователя в окно.
Как некоторые из вас справились с этим?
Что я уже пробовал:
Я попытался создать класс обратной связи, который реализует INotifyPropertyChanged и позволяет моей процедуре обновления БД изменять свойство внутри этого класса. Этот подход приводит к тому, что свойство PropertyChangedEventHanlder все время начинает NULL - даже если инициирующее свойство успешно изменено.
Мое намерение состояло в том, чтобы привязать метку внутри моего окна WPF к свойству DBFeedback моего класса обратной связи. Никакой работы. :(
<Label x:Name="lblFeedback" Width="235" Height="30" Content="{Binding Path=UserFeedback.DBUpdate}" Grid.Column="1" HorizontalAlignment="Left" Margin="170,346,0,0" Grid.Row="1" VerticalAlignment="Top" Background="#FFEED8D8"/>
Graeme_Grant
видите ли вы какие-либо ошибки привязки в выходных данных отладки?
Member 13944054
- Привет, Грант.
Надежда. Никаких ошибок привязки. По крайней мере, я этого не вижу. Однако в окне вывода есть куча вещей.
Graeme_Grant
Похоже, вы не установили DataContext.
Member 13944054
Я установил datacontext в коде позади моего окна xaml, но класс, к которому привязана моя метка обратной связи, "обновляется" внутри класса, на который указывает datacontext. Я не уверен, что это кошерно. Будет ли это вложенная привязка и разрешено ли это?
Graeme_Grant
Вы можете разорвать привязку данных, если "обновите" объект, а не/очистите/сбросите свойства. Я не могу видеть из кода, который вы разместили. Так что будь осторожен.