0
我在附加取消选中命令到复选框时遇到了问题。或者更正确,我不知道如何编码。这是我的检查命令的代码,它应该如何取消选中也可以工作?复选框命令,检查 - 确定,取消选中不好,我如何绑定取消选中命令?
查看:
<CheckBox commands:Checked.Command="{Binding CheckCommand}"
IsChecked="False"></CheckBox>
视图模型:
Private _CheckCommand As DelegateCommand(Of Object)
CheckCommand = New DelegateCommand(Of Object)(AddressOf Checked)
Private Sub Checked(ByVal parameter As Object)
End Sub
命令:
Public Class ToggleCheckedCommandBehaviour
Inherits CommandBehaviorBase(Of CheckBox)
Public Sub New(ByVal checkableObject As CheckBox)
MyBase.New(checkableObject)
AddHandler checkableObject.Checked, AddressOf checkableObject_Checked
End Sub
Private Sub checkableObject_Checked(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs)
CommandParameter = TargetObject.Name
ExecuteCommand()
End Sub
End Class
Public NotInheritable Class Checked
Private Sub New()
End Sub
Private Shared ReadOnly SelectedCommandBehaviorProperty As DependencyProperty = _
DependencyProperty.RegisterAttached("SelectedCommandBehavior", _
GetType(ToggleCheckedCommandBehaviour), _
GetType(Checked), _
Nothing)
Private Shared ReadOnly CommandProperty As DependencyProperty = _
DependencyProperty.RegisterAttached("Command", _
GetType(ICommand), _
GetType(Checked), _
New PropertyMetadata(AddressOf OnSetCommandCallback))
Public Shared Sub SetCommand(ByVal CheckBox As CheckBox, ByVal command As ICommand)
CheckBox.SetValue(CommandProperty, command)
End Sub
Public Shared Function GetCommand(ByVal CheckBox As CheckBox) As ICommand
Return TryCast(CheckBox.GetValue(CommandProperty), ICommand)
End Function
Private Shared Sub OnSetCommandCallback(ByVal dependencyObject As DependencyObject, ByVal e As DependencyPropertyChangedEventArgs)
Dim CheckBox = TryCast(dependencyObject, CheckBox)
If Not CheckBox Is Nothing Then
Dim behavior = GetOrCreateBehavior(CheckBox)
behavior.Command = TryCast(e.NewValue, ICommand)
End If
End Sub
Private Shared Function GetOrCreateBehavior(ByVal CheckBox As CheckBox) As ToggleCheckedCommandBehaviour
Dim behavior = TryCast(CheckBox.GetValue(SelectedCommandBehaviorProperty), ToggleCheckedCommandBehaviour)
If behavior Is Nothing Then
behavior = New ToggleCheckedCommandBehaviour(CheckBox)
CheckBox.SetValue(SelectedCommandBehaviorProperty, behavior)
End If
Return behavior
End Function
End Class
End Namespace
如前所述的检查命令工作正常,并连接到它的命令和方法获取火灾,我需要做些什么才能使取消选中也工作? 对于我正在使用PRISM,CAL,MVVM和SL4的信息 - 在VB.NET中