2017-08-25 38 views
0

如何設置TextTextbox使用wpf和Devexpress免費MVVM單擊按鈕時?設置文本文本使用wpf和Devexpress MVVM

這是我的文本框的XAML代碼

<TextBox Width="200" Grid.Column="1" Text="{Binding SelectedText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" FontSize="14"/> 

這是我的VM代碼

 public virtual string SelectedText { get; set; } 
     void AutoUpdateCommandExecute() 
     { 
      Console.WriteLine("Code is Executing"); 
      SelectedText = "TextBox Text is Not Changing"; 
     } 

的代碼執行,但它不會改變TextTextbox

的但是,當我在textbox中鍵入內容並使用此代碼獲取該文本框的文本時。

 void AutoUpdateCommandExecute() 
     { 
      Console.WriteLine("Code is Executing"); 
      Console.WriteLine(SelectedText); 
     } 

它打印我在文本框中鍵入的文本。那麼我做錯了什麼?我無法設置文本?

謝謝。

回答

1

所選文本需要是A的DependencyProperty然後將通知結合,它的價值已經改變...

public static readonly DependencyProperty SelectedTextProperty = DependencyProperty.Register("SelectedText", typeof(string), typeof(YourClassType)); 

public string SelectedText 
{ 
    get { return (string)GetValue(SelectedTextProperty); } 
    set { SetValue(SelectedTextProperty , value); } 
} 

OR

你的虛擬機需要實現INotifyPropertyChanged接口,並在SelectedText二傳手你需要發射屬性改變事件...

public class VM : INotifyPropertyChanged 
{ 
    public event PropertyChangedEventHandler PropertyChanged; 
    private string _selectedText; 
    public string SelectedText 
    { 
    get { return _selectedText; } 
    set 
    { 
     _selectedText = value; 
     RaisePropertyChanged("SelectedText"); 
    } 
    } 

    private void RaisePropertyChanged(string propertyName) 
    { 
    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); 
    } 
} 
+0

謝謝你,你救了我。我用第二個。但我的問題是在這裏放什麼?在YourClassType **** typeof(YourClassType) –

+1

DependencyProperty屬於它在其中定義的類,所以如果該類被稱爲ClassExample,則DependencyProperty寄存器將具有typeof(ClassExample)。這告訴框架什麼類可以找到屬性。 – CodexNZ

+0

謝謝。你的解釋確實幫助了我 –