我试图将一些项添加到Listview中,我在xaml文件中使用Xamarin.Forms标记添加。
可以通过点击事件挂钩来访问该按钮。但由于列表视图为空,我需要像winforms中的ondraw
之类的事件,以便在绘制时可以挂钩。
在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="ButtonXaml.ButtonXamlPage">
<StackLayout>
<Button Text="Tap for click count!"
BorderWidth="10"
TextColor="Red"
HorizontalOptions="Center"
Clicked="OnButtonClicked" />
<ListView
HorizontalOptions="Center"
/>
</StackLayout>
</ContentPage>
在.cs文件中我有
using System;
using Xamarin.Forms;
namespace ButtonXaml
{
public partial class ButtonXamlPage
{
int count = 0;
public ButtonXamlPage()
{
InitializeComponent();
}
public void OnButtonClicked(object sender, EventArgs args)
{
((Button)sender).Text = "You clicked me";
}
}
}
所以我应该挂钩Listview中的事件,还是像我们在android中那样做Resource.getElementbyID
之类的事情
答案 0 :(得分:23)
要访问代码隐藏中的Forms控件,您需要使用x:Name
属性为其指定名称
:
<ListView HorizontalOptions="Center" x:Name="MyList" />
代码:
MyList.ItemsSource = myData;
答案 1 :(得分:10)
Xamarin中存在一个错误,其中VS没有看到定义的x:Name http://forums.xamarin.com/discussion/25409/problem-with-xaml-x-name-and-access-from-code-behind
假设你已经在XAML中定义了一个图像:
<Image x:Name="myImageXName" />
然后这应该在代码背后工作:
this.FindByName<Image>("myImageXName");
答案 2 :(得分:2)
在我的情况下,问题是.xaml.cs文件中缺少行XamlCompilation(XamlCompilationOptions.Compile)]
。
示例:
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
BindingContext = new MainPageViewModel();
}
...
}