我试图学习如何使用WPF数据绑定。
我有一个控件,我想在控件中更改属性值。
<somecontrol Value="{Binding GoodRange}">
我在MainWindow类中创建了如下属性:
Public Property GoodRange As Double
Get
Return m_GoodRange
End Get
Set(value As Double)
m_GoodRange = value
End Set
End Property
Private m_GoodRange As Double
在Mainwindow类中,我将以下内容添加到子New()
中Public Sub New()
InitializeComponent()
GoodRange = 3000
Me.DataContext = Me
End Sub
到目前为止一切顺利,我发布了程序,将值3000传递给控件。
现在,在运行时我希望更改属性,例如当用户点击按钮或定时事件时,例如:
Private Sub UpdateValue()
GoodRange = 2800
End Sub
当我这样做时,控件上的值不会更新。我试图了解如何触发控件更新。
我用谷歌搜索了4个小时尝试尝试并理解,我在谷歌上找到并尝试了很多答案,但通常这些答案是针对自定义控件或自定义类或使用.datacontex方法,我不能使用多个财产需要改变。
我很乐意为你们提供任何帮助。
谢谢/
答案 0 :(得分:0)
正如Clemens在你的问题评论中所说,你真的需要对MVVM进行一些研究,MVVM以数据绑定为核心。一篇优秀的文章当然是Josh Smith的经典之作,MVVM Design Pattern
与此同时,作为最低限度的功能示例,您应该创建一个如下所示的实现INotifyPropertyChanged接口的类(下面的代码在C#中):
public class myViewModel : INotifyPropertyChanged
{
private double goodRange = 3000;
public double GoodRange
{
get
{
return goodRange;
}
set
{
if (value != goodRange)
{
goodRange = value;
NotifyPropertyChanged("GoodRange");
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
public void NotifyPropertyChanged(string propertyName)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
在窗口后面的代码中:
Dim mVM as myViewModel
Public Sub New()
InitializeComponent()
mVM = new myViewModel()
Me.DataContext = mVM
End Sub
Private Sub UpdateValue()
mVM.GoodRange = 2800
End Sub