使用 wpf 和 Devexpress MVVM 设置文本框文本

set textbox text using wpf and Devexpress MVVM

单击按钮时如何使用 wpf 和 Devexpress 免费 MVVM 设置 TextTextbox

这是我的文本框xaml代码

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

这是我的虚拟机代码

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

代码正在执行,但它不会更改 Textbox

Text

但是当我在 textbox 中键入内容并使用此代码获取该文本框的文本时。

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

它打印我在文本框中输入的文本。那我做错了什么?我无法设置文本?

谢谢。

您选择的文本需要是 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); }
}

您的 VM 需要实现 INotifyPropertyChanged 接口,并且在 SelectedText setter 中您需要触发一个 属性 changed 事件...

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));
  }
}