我在WPF 4和VB.net 2010中有一个项目。我想将mediaelement的volume属性绑定到另一个模块中的变量。请注意,变量的数据类型正确,因此无需转换。我该怎么做呢?
答案 0 :(得分:2)
首先,确保你的代码实现了INotifyPropertyChanged。
此处示例:http://www.codekeep.net/snippets/4c7ed2e5-7e3b-40b4-b976-d54b54d9bf5b.aspx
所有这一切都是一种通知UI卷的值已经改变并且需要在绑定上获取新值的方法。
第二件事是你需要以某种方式从代码中的其他模块访问变量,然后使用Property在代码中引用它。这里的属性示例,如果您不熟悉:
http://www.xtremevbtalk.com/showthread.php?p=688701
现在的诀窍是,当您设置属性时,您还需要调用notify属性更改事件。
Public Property Volume()
Get
Volume() = YourModuleVolume
End Get
Set(ByVal Value)
YourModuleVolume = Value
'Call NotifyPropertyChanged("Volume") here
End Set
End Property
我不记得类后面的代码是否自动将其自身设置为用户控件的DataContext,因此您可能希望在构造函数中放入“this.DataContext = this”或VB.NET等效项。通常,DataContext是从ViewModel自动提取的。基本上,这就是说使用指定的类(也就是后面的代码)作为所有数据绑定的源。
然后在XAML中,这是一个通常的数据绑定。
<YourControl Volume="{Binding Volume}" />
作为旁注,这通常不是人们通常如何设置WPF应用程序,所以这种情况有点奇怪。如果你打算在WPF上做很多事情,你可能想看看Josh Smith在MVVM上的资源 - 这实际上是WPF应用程序的预期架构。
祝你好运!