在XAML中引用另一个源文件中的点击方法?

13 浏览
0 Comments

在XAML中引用另一个源文件中的点击方法?

我有一个按钮,它有一个点击方法。我想将该方法移动到另一个CS文件中,以便我可以在其他地方重用它。在XAML中是否可以引用来自Pages源文件之外的CS源文件中的方法,例如点击方法?

0
0 Comments

问题的出现原因是:在XAML中引用其他源文件中的点击方法时,需要找到一个适当的方式来调用该方法。

解决方法是:可以从TheRedButton的点击处理程序中调用ButtonMethods中的方法。确保该方法是static的,否则需要每次创建一个ButtonMethods类的实例。

以下是实现的代码示例:

private void OnSomebodyClickedTheRedButtonWhenTheyWereNotMeantTo(object sender, RoutedEventArgs args)
{
    // 在此处理程序中执行其他操作,例如确定点击的是哪个按钮等
    ButtonMethods.RedButtonClicked(sender, args);
}

如果需要更多的控制,可以将事件参数传递给静态的点击处理程序。

在动态创建按钮的情况下,无法编写按钮点击方法,因为没有对它的引用。

0
0 Comments

在上述内容中,问题的原因是在Windows Universal项目中不支持使用x:Static关键字。解决方法是改用x:Bind关键字来引用另一个源文件中的点击方法。以下是解决方法的具体代码:

Easy peasy:

<Button Click="{x:Bind helpermethods:ButtonMethods.ButtonClick}" />

Or in WPF:

<Button Click="{x:Static helpermethods:ButtonMethods.ButtonClick}" />

C#:

public static class ButtonMethods
{
    public static RoutedEventHandler ButtonClick => Button_Click;
    public static void Button_Click(object sender, RoutedEventArgs e)
    {
        // stuff
    }
}

在Windows Universal项目中,x:Static关键字不受支持,因此无法使用该关键字来引用另一个源文件中的点击方法。解决方法是改用x:Bind关键字来实现相同的功能。通过将点击事件绑定到ButtonMethods类中的ButtonClick属性,可以实现引用另一个源文件中的点击方法。

请注意,上述解决方法是针对Windows Universal项目,如果在其他环境中使用可能会导致错误。如果有关此问题的更多疑问,请参考stackoverflow.com/questions/31963913中的讨论。

0