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

Silverlight 在xaml文件中,如何使用另一个cs文件中的事件处理程序?,silverlight,Silverlight,例如,我在xaml文件中有一个带有单击事件的按钮: < 按钮x:Name=“ButtonFindCoordinate”Content=“Map坐标”Click=“ButtonFindCoordinate\u Click”/ 据我所知,这个ButtonFindCoordinate\u Click事件处理程序必须是cs文件背后代码中的一个函数。是否有任何方法可以引用此xaml文件中另一个cs文件中的事件处理程序(例如,此按钮来自aa.xaml文件,并且我在bb.cs中保存了一个事件处理程序函数)?如

例如,我在xaml文件中有一个带有单击事件的按钮: < 按钮x:Name=“ButtonFindCoordinate”Content=“Map坐标”Click=“ButtonFindCoordinate\u Click”/

据我所知,这个ButtonFindCoordinate\u Click事件处理程序必须是cs文件背后代码中的一个函数。是否有任何方法可以引用此xaml文件中另一个cs文件中的事件处理程序(例如,此按钮来自aa.xaml文件,并且我在bb.cs中保存了一个事件处理程序函数)?如何编写此代码

谢谢


Wei

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

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

比如说

在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.cs


希望对您有所帮助-

谢谢您的友好回复,但是如何将aa.xaml的引用传递到bb.cs?你能给我举个例子吗?