当UI元素调用MVVM属性集时,Windows 8.1 UI不会更新

时间:2014-10-13 20:54:49

标签: c# mvvm windows-8.1

我的问题是,如果UI调用绑定到的属性的setter,则UI不会更新。 这是一个明确的样本:

我们说我有一个文本框绑定到这样的属性。

<TextBox PlaceholderText="Task Name..." FontSize="24" 
         Text="{Binding TaskName, Mode=TwoWay}" />

这是我的财产:

public string TaskName
{
    get
    {
        return _taskName;
    }
    set
    {
        _taskName = "something";
        RaisePropertyChanged();
    }
}

如果我在文本框中写了一些内容,那么&#34;某些东西&#34;在它失去焦点之后应该出现在它内部,但是没有任何变化。但是,如果我使用代码更改属性的值,如下所示:

TaskName = "something";

然后,更改也会出现在用户界面上。

一些进一步的信息。 这就是我实现INotifyPropertyChange接口的方式:

public class ViewModelBase : INotifyPropertyChanged
{
    public static Navigator NavigationService;

    public static void SetNavigationService(Navigator service)
    {
        NavigationService = service;
    }

    protected void GoBack()
    {
        NavigationService.GoBack();
    }

    public event PropertyChangedEventHandler PropertyChanged;

    [NotifyPropertyChangedInvocator]
    protected virtual void RaisePropertyChanged([CallerMemberName] string propertyName = null)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
    }
}

我真的不知道为什么它会像这样。我搜索了几个小时,但找不到任何东西。

1 个答案:

答案 0 :(得分:0)

在你需要调用的属性的setter中

RaisePropertyChanged(x => x.TaskName)