【问题标题】:PropertyChanged remains nullPropertyChanged 保持为空
【发布时间】:2018-11-19 06:34:38
【问题描述】:

我有以下文本框绑定:

XAML:

<TextBlock x:Name="Auslastungskapazität1" Text="{Binding Kapazität, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Foreground="Black" HorizontalAlignment="Center" Margin="0,5,5,5" FontSize="16" ></TextBlock>

MainViewModel 类:

class MainViewModel: ZuliefererStandortListe,  IDropTarget, INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;
    public int Kapazität {
        get { return _kapazität1Ausgelastet; }
        set {
            if (this._kapazität1Ausgelastet != value)
                _kapazität1Ausgelastet = value;
            OnPropertyChanged("Kapazität");
        }
    }

    public void OnPropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}

DataContext 在 MainWindow 构造函数中为

Kapazität.DataContext = new MainViewModel();

如果我更改 Kapazität,则 int 会更改并调用 OnPropertyChanged() 方法。但是“PropertyChanged”仍然为空,因此文本框绑定不会得到更新。

【问题讨论】:

  • MainWindow 构造函数中的Kapazität 是什么?看起来很奇怪,您应该设置this.DataContext 或只设置DataContext。请注意,在 Text Binding 上设置 Mode=TwoWay 和 UpdateSourceTrigger=PropertyChanged 是没有意义的。它在这里没有影响。德语标识符名称,尤其是带有变音符号的名称,看起来也很奇怪。
  • 我改变了元音变音,谢谢。我试图在 MainWindow 中为 Kapazitaet 属性声明数据上下文。也许我理解错了。

标签: c# wpf binding


【解决方案1】:

要么设置DataContext 本身的DataContext:

Auslastungskapazität1.DataContext = new MainViewModel();

...或其任何父元素,例如窗口:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        DataContext = new MainViewModel();
    }
}

【讨论】:

    猜你喜欢
    • 2020-05-11
    • 2021-06-11
    • 2017-07-10
    • 2011-04-05
    • 1970-01-01
    • 2014-06-15
    • 1970-01-01
    • 2010-12-03
    相关资源
    最近更新 更多