C# 从XAML中的另一个源文件引用click方法?

C# 从XAML中的另一个源文件引用click方法?,c#,xaml,uwp,C#,Xaml,Uwp,我有一个指定了单击方法的按钮。我想将该方法移动到另一个CS文件,以便在其他地方重用它。在XAML中,是否可以从Pages源文件之外的CS源文件引用方法click method 我想在另一个源文件中找到不要按删除按钮\u单击 ButtonMethods.cs 然后在我的XAML页面中使用它 MyPage.xaml 为了做到这一点,我需要在XAML中编写什么 我想我需要: xmlns:helpermethods=“使用:CoreProject.helpermethods” 那么 但我有编译器错误

我有一个指定了单击方法的按钮。我想将该方法移动到另一个CS文件,以便在其他地方重用它。在XAML中,是否可以从Pages源文件之外的CS源文件引用方法click method

我想在另一个源文件中找到
不要按删除按钮\u单击

ButtonMethods.cs

然后在我的XAML页面中使用它

MyPage.xaml

为了做到这一点,我需要在XAML中编写什么

我想我需要:

xmlns:helpermethods=“使用:CoreProject.helpermethods”

那么

但我有编译器错误。。。CS1002和CS1513。显然这不是正确的语法。这是可能的吗?

简易豌豆:

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

您可以从
按钮的单击处理程序调用
按钮方法中的方法

像这样:

private void OnSomebodyClickedTheRedButtonWhenTheyWereNotMeantTo(object sender, RoutedEventArgs args)
{
    // do some other stuff with sender - find out which button was clicked, etc.

    ButtonMethods.RedButtonClicked(sender, args);
}
这将允许您也从这个事件处理程序(如果您愿意的话)在这个类中执行您可能需要的“其他事情”


确保您的方法是静态的,否则每次都需要(不必要地)创建
按钮方法类的实例。

@EdPlunkett按钮方法是静态的,所以它们不需要和实例?方法essential根据绑定到按钮的对象MyButton.DataContext作为MyObject对按钮本身进行一些状态更改。因此,基本上这些方法查看
MyObject
,并在按钮上设置正确的状态。在我的代码的核心部分使用这个click方法是不可能的。我建立了许多参考核心的软件包。我的错,我误解了你的问题。但请看答案——问题是
x:Static
仅适用于属性。所以写一个属性。我似乎找不到
x:Static
。Windows通用项目不支持静态。不过,使用x:Bind对我来说是可行的。谢谢你带我去看电影answer@visc--请参阅更新;我在这里没有设置UWP应用程序,所以我无法检查它,如果它是错误的,请告诉我。是的,我考虑过这种方法。对我来说,我选择了更少的代码和更少的灵活性。但如果我需要更多的控制,我当然可以走这条路。比如将事件参数传递给my static click处理程序。是的,如果您想知道单击了哪个按钮,或者想更新该视图上的其他属性,那么它肯定很有用。我同意你所说的更少的代码——不要写比你已经需要的更多的代码!很高兴你把它分类了:)而且,在我的例子中,我是动态创建这些按钮的。因此,我没有办法编写按钮单击方法,因为我没有该方法的句柄。:)
public static class ButtonMethods
{
    public static RoutedEventHandler ButtonClick => Button_Click;

    public static void Button_Click(object sender, RoutedEventArgs e)
    {
        // stuff
    }
}
private void OnSomebodyClickedTheRedButtonWhenTheyWereNotMeantTo(object sender, RoutedEventArgs args)
{
    // do some other stuff with sender - find out which button was clicked, etc.

    ButtonMethods.RedButtonClicked(sender, args);
}