在 wpf 中使用 propertyChanged,绑定应在单击按钮时更新

Using propertyChanged in wpf, binding should update on button click

我在我的 ViewModel 中创建了一个字符串形式的 errorMessage。当您遇到错误或类似问题时,我将使用这个向用户显示消息。

在 ViewModel 中

我已经实现了 INotifyPropertyChanged 接口,我也创建了这个块:

#region INotifyPropertyChanged members
    public event PropertyChangedEventHandler PropertyChanged;

    protected void NotifyPropertyChanged([CallerMemberName] string propertyName = "")
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }

    #endregion

在 ViewModel 之上,我创建了一个名为 ErrorMessage 的字符串。

public string ErrorMessage { get; set; }

在构造函数中,我用

测试了它
 ErrorMessage = "Error message";

加载时我可以在我的视图中看到文本。 问题是当我在 try / catch 块中遇到异常并将错误设置为文本时,它不会得到更新。

在异常或单击按钮时,我尝试输入:

ErrorMessage = "No rooms with entered settings were found";

景色

<StackPanel Margin="10, 5" Grid.Row="5" Grid.ColumnSpan="3">
        <TextBlock FontFamily="../Fonts/bold.ttf#bold" Height="40" Foreground="Red" Text="{Binding ErrorMessage, UpdateSourceTrigger=PropertyChanged}"></TextBlock>
    </StackPanel>

如果向右滚动,您可以看到我已经绑定了 ErrorMessage 并为其指定了 UpdateSourceTrigger=PropertyChanged。

我需要什么才能在我的 ViewModel 中将 ErrorMessage 设置为某些情况下的文本?

您必须在设置方法中调用 NotifyPropertyChanged("ErrorMessage")。使用完整的 get 和 set 访问器实现(使用私有变量)扩展您的 属性,然后在 private属性= 值行之后调用 notify属性changed 在 set 方法中。

属性 更改时通知您的视图很重要。

S

将您的 ErrorMessage Property 更改为:

private string errorMessage;

    public string ErrorMessage
    {
        get { return errorMessage; }
        set 
        { 
            errorMessage = value;
            NotifyPropertyChanged("ErrorMessage");
        }
    }