Xamarin报错:名称‘authorEntry’在当前上下文中不存在,求解决
嘿,刚接触Xamarin的话遇到这种XAML和后台代码关联的问题太正常了,我来帮你一步步搞定~
这个错误的核心原因很明确:你的后台代码里尝试访问名为authorEntry的控件,但你的XAML文件里要么没定义这个控件,要么拼写不一致,甚至可能是编译问题导致控件引用没生成。
从你贴的NewBookPage.xaml片段来看,目前只定义了<Entry x:Name="nameEntry" .../>,完全看不到authorEntry的影子,这就是问题所在啦!
具体解决步骤:
在XAML中添加缺失的
authorEntry控件
打开你的NewBookPage.xaml,在StackLayout里补充一个带有x:Name="authorEntry"的Entry,比如:<Entry x:Name="authorEntry" Placeholder="请输入作者名称" Margin="0,10,0,0" />记得把它放在合适的位置,和其他控件一起布局。
严格检查大小写和拼写
Xamarin.Forms里控件的x:Name是区分大小写的!比如AuthorEntry和authorEntry会被识别成两个完全不同的控件,一定要保证后台代码里的名称和XAML里的x:Name完全一致,连大小写都不能错。清理并重新生成解决方案
有时候VS的XAML设计器文件会“偷懒”没更新,导致后台找不到控件引用。这时候你可以:- 点击菜单栏的【生成】→【清理解决方案】
- 接着点击【生成】→【重新生成解决方案】
重新编译后,自动生成的设计器文件会更新,控件引用就能正常识别了。
确认后台类是分部类
打开NewBookPage.xaml.cs,确保你的类定义是partial的,像这样:public partial class NewBookPage : ContentPage { // 你的代码逻辑 }只有分部类才能和XAML自动生成的设计器文件关联起来,否则控件引用肯定会失效。
给你个完整的示例参考:
NewBookPage.xaml
<?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="Form.NewBookPage"> <StackLayout Margin="10,10,10,0"> <Entry x:Name="nameEntry" Placeholder="输入书籍名称" /> <Entry x:Name="authorEntry" Placeholder="输入作者名称" Margin="0,10,0,0" /> <Button Text="保存书籍" Clicked="OnSaveBookClicked" Margin="0,20,0,0" /> </StackLayout> </ContentPage>
NewBookPage.xaml.cs
using Xamarin.Forms; namespace Form { public partial class NewBookPage : ContentPage { public NewBookPage() { InitializeComponent(); } private void OnSaveBookClicked(object sender, EventArgs e) { var newBook = new Book { Name = nameEntry.Text?.Trim(), Author = authorEntry.Text?.Trim() }; if (!string.IsNullOrEmpty(newBook.Name) && !string.IsNullOrEmpty(newBook.Author)) { DisplayAlert("添加成功", $"书籍:{newBook.Name}\n作者:{newBook.Author}", "确定"); } else { DisplayAlert("提示", "请填写完整的书籍和作者信息", "好的"); } } } public class Book { public string Name { get; set; } public string Author { get; set; } } }
按照上面的步骤操作后,应该就能解决这个“找不到authorEntry”的错误啦!
内容的提问来源于stack exchange,提问作者khoi
相关产品推荐
相关产品推荐

