在 WPF 应用程序中,假设有“n”张图像类型的图片,如果单击任何图片(即图像类型),它的可见性应该崩溃。现在执行此操作的正常方法是编写代码以折叠每张图片的每个“点击”事件。
是否有另一种方法让应用程序可以理解,只要单击任何图像类型的 UIelement(图片),那么该特定元素(图片)就应该折叠?
我想减少代码,我该如何实现?
最佳答案
您可以利用这些是路由事件这一事实,并设置 single handler on a parent element .
这允许单个事件处理程序处理子控件的所有事件。事件参数的 OriginalSource
属性将提供被点击的 UIElement,例如,如果您订阅了 UIElement.MouseLeftButtonDown
或类似的“共享”事件。
您可以通过在您的 XAML 中向您的容器中添加:
<Grid UIElement.MouseLeftButtonDown="CommonClickHandler">
<!-- Your elements here -->
然后,在你后面的代码中:
private void CommonClickHandler(object sender, MouseButtonEventArgs e)
{
Image picture = e.OriginalSource as Image; //OriginalSource is the original element
if (picture != null)
picture.Visibility = Visibility.Collapsed;
}
关于c# - 如何为相同类型的 UIElement 编写通用事件处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18024971/