1
我有几个指南针属性,每个边和一个方向属性。我将方向绑定到组合框,并且在设置指南针点的方向的setter中有一个case语句。当Datacontext值发生变化时刷新文本框
我遇到的问题是UI不刷新。如果我关闭表单并重新打开它,数据已更改为正确的值,但UI不会动态更改。
我需要做什么?
我有几个指南针属性,每个边和一个方向属性。我将方向绑定到组合框,并且在设置指南针点的方向的setter中有一个case语句。当Datacontext值发生变化时刷新文本框
我遇到的问题是UI不刷新。如果我关闭表单并重新打开它,数据已更改为正确的值,但UI不会动态更改。
我需要做什么?
对于使用WPF的案例,您正在寻找INotifyPropertyChanged
界面,该界面允许您将带有该属性的消息“发送”到UI。
晴它在被称为ViewModelBase基地:
public class ViewModelBase : INotifyPropertyChanged
{
/// <summary>
/// Raised when a property on this object has a new value
/// </summary>
public event PropertyChangedEventHandler PropertyChanged;
/// <summary>
/// Raises this ViewModels PropertyChanged event
/// </summary>
/// <param name="propertyName">Name of the property that has a new value</param>
protected void SendPropertyChanged(string propertyName)
{
SendPropertyChanged(new PropertyChangedEventArgs(propertyName));
}
/// <summary>
/// Raises this ViewModels PropertyChanged event
/// </summary>
/// <param name="e">Arguments detailing the change</param>
protected virtual void SendPropertyChanged(PropertyChangedEventArgs e)
{
var handler = this.PropertyChanged;
if (handler != null)
{
handler(this, e);
}
}
public void SendPropertyChanged<TProperty>(Expression<Func<TProperty>> property)
{
var lambda = (LambdaExpression)property;
MemberExpression memberExpression;
if (lambda.Body is UnaryExpression)
{
var unaryExpression = (UnaryExpression)lambda.Body;
memberExpression = (MemberExpression)unaryExpression.Operand;
}
else
{
memberExpression = (MemberExpression)lambda.Body;
}
SendPropertyChanged(memberExpression.Member.Name);
}
//.Net 4.5? or 4 and BCL included?
/// <summary>
/// Raises this ViewModels PropertyChanged event
/// </summary>
/// <param name="propertyName">Name of the property that has a new value</param>
protected void SendPropertyChanged([CallerMemberName]string propertyName = "")
{
SendPropertyChanged(new PropertyChangedEventArgs(propertyName));
}
}
写SendPropertyChanged(() => Property)
或SendPropertyChanged("Property")
到您的调节器和UI将
感谢更新!这有帮助! – Herrozerro
随意问:-) – Venson
我的意思是它的工作! – Herrozerro