[英]C# binding received data
我有客户端服务器应用程序,客户端从服务器获取数据并将其保存在静态类中:
public static class DataStructure
{
//! Значение каждой переменной
public static Value AxisX = new Value(@"axis_x", Dividers.AxisX);
public static Value AxisY = new Value(@"axis_y", Dividers.AxisY);
public static Value AxisZ = new Value(@"axis_z", Dividers.AxisZ);
public static Value Temp = new Value(@"temp", Dividers.Temp);
public static Value GirX = new Value(@"gir_x", Dividers.GirX);
public static Value GirY = new Value(@"gir_y", Dividers.GirY);
public static Value GirZ = new Value(@"gir_z", Dividers.GirZ);
...
public static List<Value> ListOfValues = new List<Value>
{
AxisX,
AxisY,
AxisZ,
Temp,
GirX,
GirY,
GirZ,
....
}
...
客户端应用程序具有GUI(带有MVVM模式的WPF)。 客户端每隔1秒钟从服务器接收一次数据,这些数据必须显示在窗口中。 屏幕截图(点击)
如果需要的话,我必须使用RaisePropertyChanged()
,但是我不想干扰DataSctructure
类并使用RaisePropertyChanged()
创建属性。 最好的方法是什么? 我可以在ViewModel中创建很多属性(例如AxisX
, AxisY
,...),并从ListOfValues
分配数据,但是我认为这是不合理的。
或者,可能是我必须更改应用程序的结构?
更新1:
public class Value
{
public Value(string name, double divider = 1.0)
{
Name = name;
Divider = divider;
HexCode = string.Empty;
IntValue = 1;
PhysValue = 1.0;
}
public readonly string Name;
public readonly double Divider;
public string HexCode { get; private set; }
public int IntValue { get; private set; }
public double PhysValue { get; private set; }
}
public class Value: INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void RaisePropertyChanged([CallerMemberName] string propertyName = null)
{
//this.VerifyPropertyName(propertyName);
PropertyChangedEventHandler handler = this.PropertyChanged;
if (handler != null)
{
var e = new PropertyChangedEventArgs(propertyName);
handler(this, e);
}
}
然后,如果Value是具有属性的类(例如IntValue
和PhysValue
,即至少具有吸气剂),则您已经具有可绑定到(只读)控件( DataGrid
)的集合(列表)。
例如
private double physValue;
public double PhysValue {
get { return physValue; }
set {
physValue = value;
RaisePropertyChanged();
}
}
当然,您必须详细说明才能实现所需的屏幕截图
您可以将每个Value
包装在视图模型的属性中,然后在其中调用PropertyChanged
,也可以修改DataStructure
类以触发PropertyChanged
。 但是,您必须使DataStructure
非静态的,才能对其实施INotifyPropertyChanged。
说到哪个,为什么要在静态类中存储可变数据? 那是一个非常糟糕的主意...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.