一般来说,你会得到错误CS1061当无法从 XAML 访问方法时。
最常见的情况是:
- 事件处理程序未在代码隐藏中声明
- XAML's
x:Class
标签与类的实际名称不匹配
- 方法名称不匹配
Handler
事件设置者
- 处理程序方法签名不正确
- using a
private
方法中的base
类而不是protected
- 在极少数情况下需要重新启动 Visual Studio
查看XAML代码,你的类名是Learning.App
<Application x:Class="Learning.App"
但是声明事件处理程序的代码是ViewConfigAgendaDin
public class ViewConfigAgendaDin
您不能将事件处理程序放在任何地方并期望编译器自行找到它们。因为处理程序用于App.XAML
, 你需要将事件处理程序移至App.xaml.cs
一切顺利。
如果您需要他们在ViewConfigAgendaDin
类,要么定义Style
in ViewConfigAgendaDin.xaml
或者调用一个方法ViewConfigAgendaDin.xaml.cs
from App.xaml.cs
Edit:
例如:
ViewConfigAgendaDin.xaml:
<ViewConfigAgendaDin
xmlns:v="clr-namespace:MY_NAMESPACE">
...
<Label Tag="{Binding RelativeSource={RelativeSource AncestorType={x:Type v:ViewConfigAgendaDin}}}"
Style="{StaticResource LabelTituloEstiloPadrao}"/>
...
</ViewConfigAgendaDin>
ViewConfigAgendaDin.xaml.cs:
public void MyMethodForRightClick(object sender, MouseButtonEventArgs e)
{
MessageBox.Show("Right");
}
应用程序.xaml.cs:
private void lbl_MouseRightButtonUp(object sender, MouseButtonEventArgs e)
{
((sender as Label).Tag as ViewConfigAgendaDin).MyMethodForRightClick(sender, e);
}
处理这种情况的另一种方法是完全避免代码隐藏。相反,利用MVVM and Command捆绑。您可以使用以下命令轻松地将任何事件绑定到命令互动