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

时间:2016-08-22 11:08:32

标签: wpf vb.net data-binding

我试图学习如何使用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方法,我不能使用多个财产需要改变。

我很乐意为你们提供任何帮助。

谢谢/

1 个答案:

答案 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