【发布时间】:2011-02-17 11:57:10
【问题描述】:
我遇到了一些奇怪的行为。我有一个像这样绑定到属性的控件:
<HyperlinkButton x:Name="ProjectBeheerLink"
Visibility="{Binding IsBeheerder, Converter={StaticResource VisibilityConverter}}"/>
在我的视图模型中,我的属性是这样实现的:
Public ReadOnly Property IsBeheerder As Boolean
Get
Return iwtApp.AllMyFunctieRollen.Any(Function(x) x.Rol.Equals(Constants.RoleBeheerder))
End Get
End Property
然后当我在回调方法中引发 PropertyChanged 事件时
Private Sub GetMyPersonCompleted(ByVal lo As LoadOperation(Of FunctieRol))
'Init FunctieRollen ect. ...
RaisePropertyChanged(Function() Me.IsBeheerder)
End Sub
我的绑定没有更新。
但是!如果我实现这样的后端字段:
_isBeheerder = iwtApp.AllMyFunctieRollen.Any(Function(x) x.Rol.Equals(Constants.RoleBeheerder))
RaisePropertyChanged(Function() Me.IsBeheerder)
然后像这样改变我的财产:
Public ReadOnly Property IsBeheerder As Boolean
Get
Return _isBeheerder
End Get
End Property
一切正常...有人可以解释一下这种行为吗?
只是好奇为什么..
【问题讨论】:
-
我不太明白您在非工作版本中在哪里引发属性更改事件...
-
用荷兰语编程有什么意义? :)
-
@Daniel:我提出了在服务回调中更改的属性。我将编辑我的问题以提供更清晰的信息。 @史蒂文:否则翻译所有实体是个混蛋:P
-
您是否检查了 RaisePropertyChanged 是否真的被调用,并且它引发了属性名称设置为“IsBeheerder”的事件?我不明白 RaisePropertyChanged 参数的 VB 语法
-
@Daniel: RaisePropertyChanged 事件实际上是使用正确的属性名称调用和引发的。我通常在 C# 中编程,但 atm 我在一个需要 VB.NET 的客户那里。奇怪的是,如果使用保存该值的后端字段,它就可以工作,其余的代码没有太大变化。
标签: wpf vb.net silverlight data-binding mvvm