Похоже, что привязки данных не обновляются
По какой-то причине я действительно борюсь с этим. Я новичок в wpf, и я не могу найти информацию, необходимую мне для понимания этой простой проблемы.
Я пытаюсь связать текстовое поле с строкой, вывод активности программы. Я создал свойство для строки, но когда свойство изменяется, текстовое поле этого не делает. У меня была эта проблема с listview, но я создал диспетчер, который обновляет список.
Я должен пропустить какой-то важный момент, потому что я думал, что одним из преимуществ использования wpf не было необходимости вручную обновлять элементы управления. Надеюсь, кто-то может отправить меня в правильном направлении.
- Привязка данных Android с использованием тега include
- Для чего нужен DataContext?
- Что означает «{Binding Path =.}» В привязке WPF?
- Как я могу привязать данные строк к ListBox в WPF / WP7?
- Заполнить Combobox из базы данных
в windowMain.xaml.cs
private string debugLogText = "initial value"; public String debugLog { get { return debugLogText; } set { debugLogText = value; } }
в windowMain.xaml
x:Name="wndowMain" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" DataContext="{Binding RelativeSource={RelativeSource Self}}"
- WPF привязка к локальной переменной
- Обнаружение ошибок проверки WPF
- Обход проблемы из-за отсутствия оператора 'nameof' в C # для безопасного хранения данных по типу?
- ElementName привязка из MenuItem в ContextMenu
- Связывание WPF ComboBox с пользовательским списком
- WPF MVVM INotifyPropertyChanged Implementation - модель или ViewModel
- Каковы различные режимы привязки WPF?
- Image UriSource и привязка данных
Внесите INotifyPropertyChanged в ваш class. Если у вас много classов, которым нужен этот интерфейс, я часто считаю полезным использовать базовый class следующим образом.
public abstract class ObservableObject : INotifyPropertyChanged { protected ObservableObject( ) { } public event PropertyChangedEventHandler PropertyChanged; protected virtual void OnPropertyChanged( PropertyChangedEventArgs e ) { var handler = PropertyChanged; if ( handler != null ) { handler( this, e ); } } protected void OnPropertyChanged( string propertyName ) { OnPropertyChanged( new PropertyChangedEventArgs( propertyName ) ); } }
Тогда вам просто нужно убедиться, что вы поднимаете событие PropertyChanged всякий раз, когда изменяется значение свойства. Например:
public class Person : ObservableObject { private string name; public string Name { get { return name; } set { if ( value != name ) { name = value; OnPropertyChanged("Name"); } } } }