按下按钮更改值时绑定目标不更新
Bound target not updating when button pressed to change value
我有一些使用表单的代码。表格绑定到我的class,FormData
。我的绑定运行良好并更新了我的 formData
(本地实例),但是当我尝试更改按钮 click/LostFocus 触发器上的 formData
中的其中一个变量的值时,它不会更新。
这是我的相关 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;
}
}
}
您的 Class 需要执行 INotify属性 更改,以便目标知道源 属性 是否更改:
https://docs.microsoft.com/en-us/dotnet/framework/wpf/data/how-to-implement-property-change-notification
这真的很简单,请查看文档并相应地调整您的代码。您的 属性 必须如下所示:
public string PrimaryUserName
{
get
{
return primaryUserNameValue;
}
set
{
if(primaryUserNameValue != value)
{
primaryUserNameValue = value;
OnPropertyChanged("PrimaryUserName");
}
}
}
但您还需要事件和 on属性Changed 函数才能使其正常工作。
编码愉快!
您需要实现 INotifyPropertyChanged 接口并在 formData
中引发 PropertyChanged
事件 class:
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));
}
}
我有一些使用表单的代码。表格绑定到我的class,FormData
。我的绑定运行良好并更新了我的 formData
(本地实例),但是当我尝试更改按钮 click/LostFocus 触发器上的 formData
中的其中一个变量的值时,它不会更新。
这是我的相关 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;
}
}
}
您的 Class 需要执行 INotify属性 更改,以便目标知道源 属性 是否更改: https://docs.microsoft.com/en-us/dotnet/framework/wpf/data/how-to-implement-property-change-notification 这真的很简单,请查看文档并相应地调整您的代码。您的 属性 必须如下所示:
public string PrimaryUserName
{
get
{
return primaryUserNameValue;
}
set
{
if(primaryUserNameValue != value)
{
primaryUserNameValue = value;
OnPropertyChanged("PrimaryUserName");
}
}
}
但您还需要事件和 on属性Changed 函数才能使其正常工作。 编码愉快!
您需要实现 INotifyPropertyChanged 接口并在 formData
中引发 PropertyChanged
事件 class:
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));
}
}