2016-05-15 47 views
1

我有一个文本框绑定到我的视图模型的属性之一WPF XAML绑定的文本框的属性不能清除

 <TextBox x:Name="box" Height="20" TextWrapping="Wrap" Text="{Binding name}"/> 

viewModel.cs:

public string name { get; set; } 
    [...] 
    public void clear(){ 
    name = ""; 
    } 

AddCommand:ICommand的类:

public void Execute(object parameter){ 
    //do some stuff 
    viewModel.clear(); 

    } 

其他一切都很完美。我可以读取文本框并使用它们在viewModel中进行一些计算,然后将这些计算绑定到要显示的标签。但是我读完这些文本后就无法清除这些文本框。我尝试将绑定设置为mode = twoway,但仍然不起作用

回答

1

您需要告诉WPF该属性已更改。

类似

private string _name; 
public string name 
{ 
    get 
    { 
     return _name; 
    } 
    set 
    { 
     _name = value; 
     PropertyChanged(this, new PropertyChangedEventArgs("name")); 
    } 
} 

ofcourse大多数人的东西会让一个基类,以避免调用该属性更改法,使复杂的参数。

+0

完美的工作表示感谢。什么以及如何你的意思是由一个基类,但? – user1294510

+1

@ user1294510查看https://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged(v=vs.110).aspx此链接。基类将被称为像ViewModelBase类似的东西,并实现方法NotifyPropertyChanged,如示例中所示。所以你可以调用NotifyPropertyChanged()而不是喂这个+ new propertychangedeventargs – Steve