gpt4 book ai didi

c# - XAML 或代码隐藏中的事件处理程序

转载 作者:太空狗 更新时间:2023-10-29 18:26:06 24 4
gpt4 key购买 nike

我是 Silverlight 和 XAML 的新手。在尝试学习语法和最佳实践时,我不断遇到某些实现事件处理程序的方式上的差异(或者至少对我来说是这样)。

example 中从 MSDN 我看到使用了以下代码:

<UserControl x:Class="DragAndDropSimple.Page"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="400" Height="300">
<Canvas x:Name="rootCanvas"
Width="640"
Height="480"
Background="Gray"
>
<!-- You can drag this rectangle around the canvas. -->
<Rectangle
MouseLeftButtonDown="Handle_MouseDown"
MouseMove="Handle_MouseMove"
MouseLeftButtonUp="Handle_MouseUp"
Canvas.Left="30" Canvas.Top="30" Fill="Red"
Width="50" Height="50" />
</Canvas>

</UserControl>

但是,在其他设置鼠标处理程序的地方 code我在后面的代码中看到了这种方法:

 public Window1()
{
InitializeComponent();

TransformGroup group = new TransformGroup();

ScaleTransform xform = new ScaleTransform();
group.Children.Add(xform);

TranslateTransform tt = new TranslateTransform();
group.Children.Add(tt);

image.RenderTransform = group;

image.MouseWheel += image_MouseWheel;
image.MouseLeftButtonDown += image_MouseLeftButtonDown;
image.MouseLeftButtonUp += image_MouseLeftButtonUp;
image.MouseMove += image_MouseMove;
}

我假设 MSDN 上的示例是推荐的方法,但是,我倾向于喜欢第二种方法。

是否有针对这种情况的最佳实践?

最佳答案

在第一种方法中有两个“代码站点”

  1. 在 XAML 中定义了 UI 元素并且事件在同一位置连接。
  2. 代码隐藏中的事件处理程序

在第二个中有 3 个“代码站点”

  1. 定义 UI 元素的 XAML
  2. 连接事件的构造器
  3. 代码隐藏中的事件处理程序

我个人更喜欢第一种方法。如果我删除一个元素,我只需要找到需要删除的事件处理程序,然后我也不需要编辑类构造函数。

当然这是经验法则,会有很多异常(exception)。

关于c# - XAML 或代码隐藏中的事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2065580/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com