Getting Error CS1061 on EventSetter of App.xaml

后端 未结 1 1797
离开以前
离开以前 2021-01-22 02:50

I\'m trying to create an element by my code and associate a style for it, also associating its EventSetter, the style works perfectly but when I try to run the function it does

1条回答
  •  时光取名叫无心
    2021-01-22 03:01

    Generally, you get Error CS1061 when a method is inaccessible from XAML.

    Most common cases are:

    • event handler is not declared in code-behind
    • XAML's x:Class tag not matching the actual name of the class
    • name of the method not matching the Handler of event setter
    • incorrect handler method signature
    • using a private method in the base class instead of protected
    • a need for restarting the visual studio in rare cases

    Looking at the XAML code, your class name is Learning.App

    But the code behind in which the event handlers are declared is ViewConfigAgendaDin

    public class ViewConfigAgendaDin
    

    You can't put the event handlers anywhere and expect the compiler to find them by itself. Because the handler is used in App.XAML, you need to Move the event handlers to App.xaml.cs and it will be good to go.

    If you need them to be in ViewConfigAgendaDin class, either define the Style in ViewConfigAgendaDin.xaml or call a method in ViewConfigAgendaDin.xaml.cs from App.xaml.cs

    Edit:

    For example:

    ViewConfigAgendaDin.xaml:

    
    ...
        
    

    ViewConfigAgendaDin.xaml.cs:

    public void MyMethodForRightClick(object sender, MouseButtonEventArgs e)
    {
        MessageBox.Show("Right");
    }
    

    App.xaml.cs:

    private void lbl_MouseRightButtonUp(object sender, MouseButtonEventArgs e)
    {
        ((sender as Label).Tag as ViewConfigAgendaDin).MyMethodForRightClick(sender, e);
    }
    

    Another way to handle this situation is to avoid code-behind altogether. Instead, make use of MVVM and Command Binding. You can easily bind any event to a command using Interactions

    0 讨论(0)
提交回复
热议问题