我在网格列上有一个复选框,它分配了一个命令。我的 CanExecute 方法在我加载窗口和网格中的每个项目时触发,即使我没有单击复选框。我最终会关闭一个消息框对话框循环。
如果焦点没有丢失,它似乎不会经常触发,但在我单击框之前它仍然会触发。
理想情况下,除非我选中复选框,否则我希望它根本不运行。我正在使用Microsoft.VisualStudio.Utilities的 DelegateCommand 。
<DataGrid ItemsSource="{Binding Employees}" CanUserAddRows="False">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Register">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox Command="{Binding RelativeSource={RelativeSource AncestorType=DataGrid}, Path=DataContext.CheckboxRegisterCommand}"></CheckBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
和视图模型:
Public Property CheckboxRegisterCommand As DelegateCommand
Public Sub New()
CheckboxRegisterCommand = New DelegateCommand(AddressOf Register, AddressOf CanRegister)
Employees = New ObservableCollection(Of Employee) From
{
New Employee(),
New Employee(),
New Employee()
}
End Sub
Private Function CanRegister() As Boolean
MessageBox.Show("Can Register..")
Return True
End Function
Private Sub Register()
MessageBox.Show("Registering")
End Sub