[英]How to get controls described in XAML file in a Xamarin Form project?
我无法正确获取XAML文件中描述的控件。 我给XAML文件中的按钮一个ClassId
并尝试使用FindByName
在CS文件中访问它。
这是在iOS模拟器中运行的Xamarin Form项目中。
在MainPage.XAML
文件中,
<StackLayout>
<!-- Place new controls here -->
<Button Text="" />
<Label ClassId="myLabel1"
Text="Xamarin Form Demo"
HorizontalOptions="Center"/>
<Button ClassId ="btnNum"
Text="Image Control"
HorizontalOptions="Center" />
<Image ClassId="myImg"
HorizontalOptions="Center" />
<Label ClassId="myLabel2"
Text="Number"
HorizontalOptions="Center"/>
</StackLayout>
在MainPage.xaml.cs文件中,
public MainPage()
{
InitializeComponent();
int num = 0;
((Button)FindByName("btnNum")).Clicked += (o, e) ((Label)FindByName("myLabel2")).Text = (++num).ToString();
}
当我在iOS Emulator上运行应用程序时,在MainPage.xaml.cs
文件中最长的代码行中总是出现以下错误,
*********
未处理的异常:System.NullReferenceException:对象引用未设置为对象的实例
*********
感谢您的帮助,如果我可以从其他内容页面获取有关访问控件的更多信息,那将是很好的。
为您的控件分配一个名称
<Button x:Name="MyButton" Text="" />
然后在后面的代码中按名称引用它-您无需声明它
MyButton.Text = "blah blah blah";
您需要使用x:Name
指令,该指令可以在Xamarin.Forms中的任何控件中使用。
从文档 :
在XAML名称范围中唯一标识XAML定义的元素。 当框架提供API或实现在运行时访问XAML创建的对象图的行为时,可以将XAML名称范围及其唯一性模型应用于实例化的对象。
在XAML中的用法:
<Label x:Name="myLabel1"
Text="Xamarin Form Demo"
HorizontalOptions="Center"/>
<Button
x:Name ="btnNum"
Text="Image Control"
HorizontalOptions="Center" />
在Page.xaml.cs中
myLabel1.Text = "test";
btnNum.Clicked +=
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.