我创建了一个程序,它从列表中读取TextBox值,实现它们,然后当它们被更改时(焦点丢失时),列表值会更新为用户的眼睛。
TLDR:更改文本框值,列表中的值更改
我希望能够在我的重构阶段使用数据绑定,因为当我处理大量数据时,十几行代码是不切实际的。
不幸的是,我真的不知道数据绑定。任何人都可以给我指导在这种情况下该怎么做?
Data.cs
protected bool _Enabled;
protected long _SensorId;
protected float _Min;
protected float _Maxe;
protected SensorType _SType;
它链接到的地方:
Controller.cs
List<Sensor> _Sensors = new List<Sensor>();
此链接指向传感器ID,如果它有助于解释任何内容
显示的内容:
MainPage.xaml
<TextBox Name="txtMin_1" Text="" LostFocus="MinMaxValueChange"/>
<TextBox Name="txtMin_2" Text="" LostFocus="MinMaxValueChange"/>
<TextBox Name="txtMin_3" Text="" LostFocus="MinMaxValueChange"/>
<TextBox Name="txtMin_4" Text="" LostFocus="MinMaxValueChange"/>
我想在Text
中这样做我可以使用Text="{Binding}"
从列表中提取,文本框使用的所有值
我所要求的是否有意义,任何人都可以提供帮助吗?如果没有意义,请询问,因为我很乐意提供我能提供的所有信息。
编辑:进度更新
所以这是我从提供的答案中添加的代码:
MainPage.xaml.cs
Controller = new Controller(this);
this.DataContext = Controller.Sensors;
Controller.cs
private List<Sensor> _sensors;
public List<Sensor> Sensors
{
get { return _sensors; }
set { _sensors = value; }
}
我还添加了一个可以更改值的虚拟对象,以检查它们是否被检索,这没有任何效果。
答案 0 :(得分:1)
您需要为List创建一个Property,然后将特定元素绑定到文本框,如:
<TextBox Name="txtMin_1" Text="{Binding Sensors[0]}" LostFocus="MinMaxValueChange"/>
<TextBox Name="txtMin_2" Text="{Binding Sensors[1]}" LostFocus="MinMaxValueChange"/>
<TextBox Name="txtMin_3" Text="{Binding Sensors[2]}" LostFocus="MinMaxValueChange"/>
<TextBox Name="txtMin_4" Text="{Binding Sensors[3]}" LostFocus="MinMaxValueChange"/>
并在您的controller.cs中:
private List<Sensor> _sensors;
public List<Sensor> Sensors
{
get { return _sensors; }
set { _sensors = value; }
}
重要的是,您将MainPage.xaml的DataContext设置为Controller(我假设这是您的viewmodel)。
以下是一些可能对数据绑定和mvvm有用的链接:
http://www.c-sharpcorner.com/UploadFile/mahakgupta/simple-data-binding-in-wpf/
http://www.codeproject.com/Articles/29054/WPF-Data-Binding-Part
http://www.codeproject.com/Articles/165368/WPF-MVVM-Quick-Start-Tutorial
http://www.codeproject.com/Articles/819294/WPF-MVVM-step-by-step-Basics-to-Advance-Level