簡體   English   中英

視圖模型中的MVVM清除文本框

[英]MVVM clear textbox in the view model

我試圖清除視圖模型中文本框中存儲的數據,我可以使用.clear在視圖xaml中清除它。 但我不想在后面使用代碼

<TextBox Name ="UserFirstName" HorizontalAlignment="Right" Height="23" Margin="119,67,0,0" 
    TextWrapping="Wrap" Text="{Binding User.FirstName, UpdateSourceTrigger=PropertyChanged}" 
    VerticalAlignment="Top" Width="163" TextChanged="UserFirstName_TextChanged"/>

我希望每次單擊頁面時刷新字段

有什么建議么

您的文本框的Text屬性應綁定到viewmodel中的屬性。

當您在視圖模型中更改屬性的值時,文本框中的文本將通過數據綁定自動更新。

文本綁定到User.FirstName屬性。 為了確保數據綁定有效,該屬性必須引發PropertyChanged事件:

public class UserViewModel : INotifyPropertyChanged
{
     private string _firstName = "";
     public string FirstName
     { 
         get { return _firstName; }
         set { _firstName = value; OnPropertyChanged(); }
     }

     public event PropertyChanged;

     private void OnPropertyChanged( [CallerMemberName] string propertyName )
     {
          PropertyChanged?.Invoke( this, new PropertyChanedEventArgs( propertyName ) );
     }
}

MVVM依靠INotifyPropertyChanged來通知XAML UI有關數據綁定視圖模型實例中的更改。

因此,現在,一旦您想清除FirstName ,只需為它分配string.Empty ,UI就會自動更新。

使用此代碼(的更正版本)

馬丁·齊克蒙德

public class UserViewModel : INotifyPropertyChanged{
    private string _firstName = "";
    public string FirstName{ 
        get {
            return _firstName;
        }
        set {
            _firstName = value; OnPropertyChanged();
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    private void OnPropertyChanged( [CallerMemberName] string propertyName = null ){
        PropertyChanged?.Invoke( this, new PropertyChangedEventArgs( propertyName ) );
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM