我是 WPF 的新手,正在寻找事件处理的最佳实践。例如,我有一个带有 3 个复选框的网格控件,我想在所有 3 个复选框的选中和取消选中事件上调用相同的过程。我可以在网格控件上以声明方式执行此操作:
<Grid Name="grdChecks" CheckBox.Checked="EvaluateMe" CheckBox.Unchecked="EvaluateMe" >
或者我可以在页面加载时完成
Dim ck As System.Windows.Controls.CheckBox
For Each child In Me.grdChecks.Children
If child.GetType.Name = "CheckBox" Then
ck = DirectCast(child, System.Windows.Controls.CheckBox)
AddHandler ck.Checked, AddressOf Me.EvaluateMe
AddHandler ck.Unchecked, AddressOf Me.EvaluateMe
End If
Next
这两种方法是否被认为是最佳实践或是否有其他考虑因素?
最佳答案
Is either method considered best practice or are there other considerations?
一般来说,我更愿意将事件处理程序声明保留在 XAML 中,因为这确实使它更容易理解(不需要检查页面加载中的所有子项)。此外,如果您将 CheckBox 添加到 不应 订阅的 Window/Control/etc,您的 Page_Load
代码会导致问题。
话虽这么说,但许多人不会将其中任何一种视为“最佳实践”,因为在 WPF 中通常不鼓励代码隐藏。移动复选框以在 ViewModel 中使用绑定(bind)属性通常被认为是最佳实践。
关于WPF 事件,声明式还是处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17620938/