对不起,我不知道如何更好地标题我的问题,如果你有一个好的1,你可以说出来。
我有一个实体Contact
。
此人具有导航属性:Address
,Phones
(Phone
的集合)。
它们都实现了一个公开属性IsValid
的自定义接口。
在联系编辑表单中,我有一个确定按钮,我希望它的IsEnabled
属性仅在以下情况下为真:
Contact.IsValid
Contact.Address.IsValid
Array.TrueForAll(Person.Phones.Cast(Of Phone).ToArray, Function(p) p.IsValid)
我不喜欢使用转换器,但是只做Xamly,无论如何,我不介意使用本地代码(即引用当前页面中返回布尔值的方法,如System.Web.UI.WebControls.CustomValidator或类似的东西),但我真的不想要转换器,除非它是唯一的选择。
答案 0 :(得分:0)
Thru this我能够解决我的问题。
我将IsEnabled属性绑定到我放在代码隐藏中的依赖项属性,如果项有效,则返回我称为IsValid的依赖项:
Sub Window_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
btnOK.DataContext = Me
End Sub
Private m_IsValid As Boolean
Public Property IsValid() As Boolean
Get
Return GetValue(IsValidProperty)
End Get
Private Set(ByVal value As Boolean)
SetValue(IsValidPropertyKey, value)
End Set
End Property
Private Shared ReadOnly IsValidPropertyKey As DependencyPropertyKey = _
DependencyProperty.RegisterReadOnly("IsValid", _
GetType(Boolean), GetType(PersonEditor), _
New FrameworkPropertyMetadata(False))
Public Shared ReadOnly IsValidProperty As DependencyProperty = _
IsValidPropertyKey.DependencyProperty
我在要验证的所有项目的OnPropertyChanged事件处理程序中设置IsValid属性。
在Xaml中我设置了这样的按钮:
<Button Name="btnOk" IsEnabled="{Binding IsValid}"/>