Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
控件属性上的VB.NET WPF数据绑定(如何更新)_Wpf_Vb.net_Data Binding - Fatal编程技术网

控件属性上的VB.NET WPF数据绑定(如何更新)

控件属性上的VB.NET WPF数据绑定(如何更新),wpf,vb.net,data-binding,Wpf,Vb.net,Data Binding,我正在尝试学习如何使用WPF数据绑定 我有一个控件,我想更改控件中某个属性的值 <somecontrol Value="{Binding GoodRange}"> 在Mainwindow类中,我将以下内容添加到sub New()中 到目前为止还不错,hwen i启动程序,值3000传递给控件 <somecontrol Value="{Binding GoodRange}"> 现在,在运行时,我想更改属性,例如,当用户单击按钮或定时事件时,例如: Private S

我正在尝试学习如何使用WPF数据绑定

我有一个控件,我想更改控件中某个属性的值

<somecontrol Value="{Binding GoodRange}"> 
在Mainwindow类中,我将以下内容添加到sub New()中

到目前为止还不错,hwen i启动程序,值3000传递给控件

<somecontrol Value="{Binding GoodRange}"> 
现在,在运行时,我想更改属性,例如,当用户单击按钮或定时事件时,例如:

Private Sub UpdateValue()

    GoodRange = 2800

End Sub
执行此操作时,控件上的值不会更新。我试图理解如何触发控件更新

我在谷歌上搜索了4个小时,试着理解,我在谷歌上找到并尝试了很多答案,但通常这些答案是针对自定义控件或自定义类的,或者使用.datacontex方法,我不能将其用作多个属性,需要更改

如果你们能提供任何帮助,我将不胜感激


谢谢你/

正如克莱门斯在对你的问题的评论中所说,你真的需要对MVVM做一些研究,MVVM的核心是数据绑定。一篇优秀的文章首先当然是Josh Smith的经典之作

同时,作为一个最小的函数示例,您应该创建一个实现INotifyPropertyChanged接口的类,如下所示(下面的代码是C#):

在窗口的“代码隐藏”中:

Dim mVM as myViewModel

Public Sub New()
   InitializeComponent()
   mVM = new myViewModel()
   Me.DataContext = mVM
End Sub

Private Sub UpdateValue()
   mVM.GoodRange = 2800
End Sub

正如Clemens在对您的问题的评论中所说,您确实需要对MVVM进行一些研究,MVVM的核心是数据绑定。一篇优秀的文章首先当然是Josh Smith的经典之作

同时,作为一个最小的函数示例,您应该创建一个实现INotifyPropertyChanged接口的类,如下所示(下面的代码是C#):

在窗口的“代码隐藏”中:

Dim mVM as myViewModel

Public Sub New()
   InitializeComponent()
   mVM = new myViewModel()
   Me.DataContext = mVM
End Sub

Private Sub UpdateValue()
   mVM.GoodRange = 2800
End Sub

您必须实现属性更改通知。这通常通过实现INotifyPropertyChanged接口来实现。但是请注意,在视图类(如主窗口)中实现这一点并不常见。通常创建一个单独的类来实现它,并定义绑定的源属性。然后将该类的实例分配给视图的DataContext。这就是所谓的视图模型。在web上搜索MVVM。您必须实现属性更改通知。这通常通过实现INotifyPropertyChanged接口来实现。但是请注意,在视图类(如主窗口)中实现这一点并不常见。通常创建一个单独的类来实现它,并定义绑定的源属性。然后将该类的实例分配给视图的DataContext。这就是所谓的视图模型。在网上搜索MVVM。非常感谢Bob。这工作得很好,尽管我不得不稍微修改它以适应我当前复杂的程序。虽然我了解在hte视图模型内部绑定并不是最佳实践,但在我进一步了解WPF之前,这是我目前必须使用的。我将阅读您链接的文档,并感谢您的帮助!顺便说一句:公共事件PropertyChanged(ByVal sender作为对象,ByVal e作为PropertyChangedEventArgs)实现INotifyPropertyChanged。当转换到VB.NET时,需要添加PropertyChanged。非常感谢您。这工作得很好,尽管我不得不稍微修改它以适应我当前复杂的程序。虽然我了解在hte视图模型内部绑定并不是最佳实践,但在我进一步了解WPF之前,这是我目前必须使用的。我将阅读您链接的文档,并感谢您的帮助!顺便说一句:公共事件PropertyChanged(ByVal sender作为对象,ByVal e作为PropertyChangedEventArgs)实现INotifyPropertyChanged。转换到VB.net时需要添加PropertyChanged
Dim mVM as myViewModel

Public Sub New()
   InitializeComponent()
   mVM = new myViewModel()
   Me.DataContext = mVM
End Sub

Private Sub UpdateValue()
   mVM.GoodRange = 2800
End Sub