I 클래스의 각 인스턴스 이름를 얻을 수 있도록 다음과 같은 열거는 3 상태 체크 박스에 열거 값을 바인딩
Enum NodeStatusTypes
Undefined
Grant
Deny
End Enum
과 내가 목록 상자에 클래스를 결합하는 것을 시도하고있다 permission 텍스트 상자 및 3- 상태 확인란에 바인딩 된 목록 상자에 항목이 있습니다. 아래의 코드는 permission 속성이 인 인 클래스 객체를 추가하면 확인란이 선택된다는 점에서 부분적으로 작동합니다. 그러나 나는 또한 그 허가을 거부하고 체크 박스가 "널 (null)"상태에 있어야 할 물체 (예를 들면의 IsChecked = "null이") 허가를이 정의되지 않은 때를 위해 선택하지 않은 것으로 체크 박스가 필요합니다. 문제가 ConverterParameter에있는 것이 거의 확실하지만이 문제를 처리하는 방법을 알 수 없습니다. ,
이Public Function Convert(value As Object, targetType As System.Type,
parameter As Object,
culture As System.Globalization.CultureInfo) As Object
Implements System.Windows.Data.IValueConverter.Convert
Dim retVal As Object = Nothing;
Select Case value
Case NodeStatusTypes.Undefined
retVal = Nothing
Case NodeStatusTypes.Grant
retVal = True
Case NodeStatusTypes.Deny
retVal = False
End Select
Return retVal
End Function
컨버터 매개 변수가 많은 의미를하지 않는 것 : 올바른 구현은 다음과 같이 보일 것이다
Public Class EnumToTriStateConverter
Implements IValueConverter
Public Function Convert(value As Object, targetType As System.Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.Convert
Return value.Equals(parameter)
End Function
Public Function ConvertBack(value As Object, targetType As System.Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.ConvertBack
Dim retVal As NodeStatusTypes = Nothing
Select Case value
Case Nothing
retVal = NodeStatusTypes.Undefined
Case True
retVal = NodeStatusTypes.Grant
Case False
retVal = NodeStatusTypes.Deny
End Select
Return retVal
End Function
End Class
변환 코드도 공유 할 수 있습니까? – BigL