在xaml文件中,如何使用另一个cs文件中的事件处理程序?

时间:2011-02-10 02:47:18

标签: silverlight

例如,我在xaml文件中有一个带有click事件的按钮: < 按钮x:Name =“ButtonFindCoordinate”Content =“Map Coordinate”Click =“ButtonFindCoordinate_Click”/>

据我所知,这个ButtonFindCoordinate_Click事件处理程序必须是来自cs文件后面的代码的函数。有没有什么办法可以从这个xaml文件中的另一个cs文件引用一个事件处理程序(例如,这个按钮来自aa.xaml文件,我有一个保存在bb.cs中的事件处理函数)?我该如何编写这段代码?

谢谢,

2 个答案:

答案 0 :(得分:2)

我想说通常更好的做法是将处理程序的逻辑提取到一个单独的类中,然后让两个点击处理程序都调用相同的方法。

例如

在A.xaml.cs

private void ButtonFindCoordinate_Click(object sender, EventArgs e) 
{
     string postCode = CoordinateFinder.FindPostCode(txtButtonFind.Text);
}

和B.xaml.cs

private void OtherButton_Click(object sender, EventArgs e)
{
    string postCode = CoordinateFinder.FindPostCode(txtSomeOtherField.Text);
}

然后CoordinateFinder类可能就像。

public class CoordinateFinder 
{
    public static string FindPostCode(string coordinates)
    {
         // shared code here.
    }

}

我之所以说更好的做法是不在各个“共享”点击处理程序,我希望您的代码尽可能易读和可维护。

想象一下,如果你在几个月后回来看到B类中的点击处理程序从A类调用点击处理程序 - 现在你必须阅读A的点击处理程序以发现它的作用。

此外,如果您(或您团队中的某个人)要更新aa.xaml.cs,他们可能会访问aa.xaml中的字段,这会在不知情的情况下破坏bb.c。

希望有所帮助 -

答案 1 :(得分:0)

将aa.xaml的引用传递给bb.cs并使用该引用来访问该事件。