c# - 按下按钮更改值时绑定目标未更新
问题描述
我有一些使用表单的代码。该表格绑定到我的班级,FormData
. 我的绑定运行良好并更新了我的formData
(本地实例),但是当我尝试更改formData
按钮单击/LostFocus 触发器中的一个变量的值时,它不会更新。
这是我的相关 XAML:
<TextBox x:Name="friendly_name_textBox"
Style="{StaticResource TextErrorStyle}"
Text="{Binding
PrimaryUserName,
Mode=TwoWay,
ValidatesOnExceptions=True,
ValidatesOnDataErrors=True,
UpdateSourceTrigger=PropertyChanged,
NotifyOnValidationError=True}"
HorizontalAlignment="Left"
Margin="0,75,0,0"
TextWrapping="Wrap"
VerticalAlignment="Top"
Width="120"/>`
按钮触发器(确实运行):
private void Button_Click(object sender, RoutedEventArgs e)
{
formData.PrimaryUserName = "TEST";
}
我的FormData
代码:
public string PrimaryUserName
{
get
{
return primaryUserNameValue;
}
set
{
if(primaryUserNameValue != value)
{
primaryUserNameValue = value;
}
}
}
解决方案
您需要实现INotifyPropertyChanged接口并在您的类中引发PropertyChanged
事件:formData
public class formData : INotifyPropertyChanged
{
private string primaryUserNameValue;
public string PrimaryUserName
{
get
{
return primaryUserNameValue;
}
set
{
if (primaryUserNameValue != value)
{
primaryUserNameValue = value;
NotifyPropertyChanged();
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
推荐阅读
- node.js - 节点中的 Postgres 在冲突更新时插入
- c++ - 在运行时选择父类的实现
- macos - 编程打开 OSX System Preferences Extensions 窗格并锚定到 Finder 项目
- ios - 创建单独的文本字段效果
- iis - IIS 阻止 HEAD 方法,返回 405 而允许使用所有动词
- c# - 选择多行时如何更改给定列中单元格的值?
- css - 在 Wordpress 中更改“生成预览”屏幕
- javascript - RxJs 6 加载更多分页流
- prometheus-net - Prometheus-net:调用 /metrics 端点时回调以更新仪表?
- android - 发布请求返回空响应正文Android?