C# TextBlock绑定在开始时仅更新一次

C# TextBlock绑定在开始时仅更新一次,c#,wpf,data-binding,C#,Wpf,Data Binding,我的.xaml文件中有一个texblock,我已绑定到属性。还有两个按钮指向++和--单击时该属性的值。问题是绑定只在应用程序开始时起作用 单击按钮时,将执行相应的命令,并且变量会更改其在代码中的值(因此执行给定的方法没有问题) 但是,在UI中看不到任何更改。我不确定这里的原因是什么,UI是否以某种方式被阻塞?我一直使用MVVM的方式工作,从来没有像绑定这样的问题 如果需要更多的代码,请告诉我,我不想在这里设置一堵巨大的代码墙 建造商: public MainWindow() {

我的.xaml文件中有一个texblock,我已绑定到属性。还有两个按钮指向++和--单击时该属性的值。问题是绑定只在应用程序开始时起作用

单击按钮时,将执行相应的命令,并且变量会更改其在代码中的值(因此执行给定的方法没有问题)

但是,在UI中看不到任何更改。我不确定这里的原因是什么,UI是否以某种方式被阻塞?我一直使用MVVM的方式工作,从来没有像绑定这样的问题

如果需要更多的代码,请告诉我,我不想在这里设置一堵巨大的代码墙

建造商:

    public MainWindow()
    {
        InitializeComponent();
        this.DataContext = this;

        Zoom = 60;

        ZoomPlusSceneCommand = new RelayCommand(ZoomPlus);
        ZoomMinusSceneCommand = new RelayCommand(ZoomMinus);
    }
处理属性已更改:

    public event PropertyChangedEventHandler PropertyChanged;

    public void RaisePropertyChanged(string propertyName = "")
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }
财产本身:

    private int zoom;
    public int Zoom
    {
        get { return zoom; }
        set { if (zoom != value) { zoom = value; RaisePropertyChanged("Zoom"); } }
    }
命令:

    public RelayCommand ZoomPlusSceneCommand { get; set; }
    public RelayCommand ZoomMinusSceneCommand { get; set; }
其中RelayCommand是我在大多数项目中用作模板的实现,它们一直工作得很好(至少在MVVM项目中)

单击按钮时使用命令执行的方法:

    private void ZoomPlus(object o)
    {
        Zoom++;
    }
    private void ZoomMinus(object o)
    {
        Zoom--;
    }
Xaml:


假设设置了属性,则应更新视图,前提是
main窗口
类实际实现了
INotifyPropertyChanged

public partial class MainWindow : Window, INotifyPropertyChanged
...

如何为绑定设置DataContext?@ASh在windows构造函数中我有
this.DataContext=this您显示的内容看起来正常(尽管您可以)。您可以显示更多内容吗?请尝试将
Zoom++
替换为
Zoom+=1
,并将
Zoom--
替换为
Zoom-=1
@trix无法帮助您了解缺少的内容。谢谢
    private void SceneMouseWheel(object sender, MouseWheelEventArgs e)
    {
        if (e.Delta > 0)
            Zoom++;
        else
            Zoom--;

        return;
    }
public partial class MainWindow : Window, INotifyPropertyChanged
...