fehlende Erweiterungsmehtode



  • Hallo, ich habe folgendes Problem:
    Ich möchte ein Ereignis auslösen, wenn ich auf den Button klicke, aber es kommt immer die Fehlermeldung:
    "ExpenseItHome" enthält keine Definition für "Button_Click", und es konnte keine Erweiterungsmethode "Button_Click" gefunden werden, die ein erstes Argument vom Typ "ExpenseItHome" akzeptiert. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)

    Dabei habe ich den Namen im xaml Code angegeben und kann über Rechtsklick auch zum Ereignisshandler navigieren.

    <Button
                            ...
                            Click="Button_Click">
                                    View
    </Button>
    
    private void Button_Click(object sender, RoutedEventArgs e)
            {
                ...
            }
    

  • Administrator

    Zu wenig Informationen, da können wir auch nur Rätselraten. Kannst du das Wurzelelement von XAML zeigen, in welchem Button definiert ist? Und in welcher Klasse wurde Button_Click definiert? Kannst du den Fehler in einem separaten simplen Projekt nachbauen?

    Grüssli



  • Okay, hier das Projekt in vereinfachter Form:

    mainWindow.xaml:

    <NavigationWindow
        x:Class="MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="ExpenseIt"
        Height="350"
        Width="500"
        Source="ExtenseItHome.xaml">
    </NavigationWindow>
    

    mainWindow.xaml.cs:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;
    
    namespace ExtenseIt
    {
    
        public partial class MainWindow : NavigationWindow
        {
            public MainWindow()
            {
               // InitializeComponent();
            }
        }
    }
    

    ExtenseItHome.xaml:

    <Page
        x:Class="ExtenseItHome"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        mc:Ignorable="d"
        d:DesignHeight="300"
        d:DesignWidth="436"
        Title="ExpenseIt - Home">
        <Grid>
            <Button
                            Click="Button_Click">
                View
            </Button>
    
        </Grid>
    </Page>
    

    ExtenseItHome.xaml.cs:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;
    
    namespace ExtenseIt
    {
        public partial class ExtenseItHome : Page
        {
            public ExtenseItHome()
            {
                //InitializeComponent();
            }
    
            private void Button_Click(object sender, RoutedEventArgs e)
            {
            }
    
        }
    }
    

  • Administrator

    <NavigationWindow x:Class="ExtenseIt.MainWindow" ... >
    

    und

    <Page x:Class="ExtenseIt.ExtenseItHome" ... >
    

    Anders gesagt, du musst den vollständigen Namen der Klasse dort angeben (inklusive der Namensräume).

    Grüssli



  • Danke, jetzt funktioniert's.


Anmelden zum Antworten