使用 wpf 和 Devexpress MVVM 设置文本框文本
set textbox text using wpf and Devexpress MVVM
单击按钮时如何使用 wpf 和 Devexpress 免费 MVVM 设置 Text
的 Textbox
?
这是我的文本框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));
}
}
单击按钮时如何使用 wpf 和 Devexpress 免费 MVVM 设置 Text
的 Textbox
?
这是我的文本框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));
}
}