在wpf中使用propertyChanged,绑定应按下按钮

时间:2016-04-17 19:24:49

标签: wpf mvvm propertychanged

我在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设置为某些情况下的文本?

2 个答案:

答案 0 :(得分:1)

您必须在set方法中调用NotifyPropertyChanged(“ErrorMessage”)。使用完整的get和set访问器实现扩展属性(使用私有变量),然后在privateproperty = value line之后在set方法中调用notifypropertychanged。

在属性发生变化时通知您的观点非常重要。

取值

答案 1 :(得分:0)

将您的contains_vowel ErrorMessage更改为:

Property