WPF - 如何从类外部向元素添加事件处理程序?

时间:2014-09-08 08:21:29

标签: c# wpf win-universal-app

我正在寻找许多小时的答案但没有成功。有办法做到这一点,但每个包含的元素必须是静态的。什么不适合我。

我有MainPage类和Tile类。此tile类在MainPage布局中实例化几种tile。我需要添加一些这些瓷砖Tapped事件。此事件应修改MainPage元素。

最好的方法是什么?我总是以“非静态警告”结束,正如您在代码中看到的那样:

public class Tile
{
   public static Grid buttonTile_MapPanel(int rowNum, int colNum)
    {
        Grid mapPanelButton = new Grid();
        mapPanelButton.Background = new SolidColorBrush(Color.FromArgb(255, 50, 50, 50));
        TextBlock title = new TextBlock();
        title.Text = "Mapa";
        title.HorizontalAlignment = HorizontalAlignment.Center;
        title.VerticalAlignment = VerticalAlignment.Center;
        title.Foreground = new SolidColorBrush(Colors.White);
        mapPanelButton.Children.Add(title);

        //this will be signed as error: An object reference is required for non static field...
        mapPanelButton.Tapped += new RoutedEventHandler(MainPage.mapPanelService);

        return mapPanelButton;
    }
}

public sealed partial class MainPage : Page
{
    public void mapPanelService(object sender, RoutedEventArgs e) 
    {
        MapPanel.Margin = new Thickness(0,0,0,0);
    }  
}

1 个答案:

答案 0 :(得分:0)

主要问题是糟糕的处理程序类型,它需要的东西比它应该的更多。

正确的代码:     public void dataPanelService(object sender,Windows.UI.Xaml.Input.TappedRoutedEventArgs e)         {    。    。