我有一个WPF 4和VB.net 2010的项目。我想把一个mediaelement的volume属性绑定到另一个模块中的一个变量。提醒您,该变量是正确的数据类型,所以不需要转换。我该怎么做呢?
首先,确保你后面的代码实现了INotifyPropertyChanged。
所有这些都是通知UI,Volume的值发生了变化,它需要在绑定上抓取新的值。
第二件事是你需要以某种方式从后面的代码中访问其他模块的变量,然后在后面的代码中使用Property引用。
现在的技巧是,当你设置属性的时候,你要同时调用notify property changed事件。
Public Property Volume()
Get
Volume() = YourModuleVolume
End Get
Set(ByVal Value)
YourModuleVolume = Value
'Call NotifyPropertyChanged("Volume") here
End Set
End Property
我不记得后面的代码类是否会自动将自己设置为User Control的DataContext,所以你可能要在你的构造函数中加入一个 "this.DataContext = this "或VB.NET等价物。通常DataContext是自动从你的ViewModel中拉进来的。基本上,这说的是使用指定的类(也就是后面的代码)作为所有数据绑定的来源。
那么在XAML中就是一个普通的数据绑定。
<YourControl Volume="{Binding Volume}" />
说句题外话,这确实不是人们通常设置WPF应用程序的方式,所以这种情况有点奇怪。如果你打算对WPF做很多事情,你可能会想看看Josh Smith关于MVVM的资源--这才是WPF应用程序的真正目的架构。
祝您好运!