如果我创建一个新的跨平台应用程序,并在默认布局中添加按钮并添加click事件,那么所有行为都将达到预期的效果。如果我更改布局并将任何其他元素放入应用程序,则事件将无法触发。我正在针对连接的设备进行测试,但也已在模拟器上进行了尝试。
此作品:
<StackLayout>
<!-- Place new controls here -->
<Button x:Name="Testbtn" Text="Click Me" />
<Label Text="Welcome to Xamarin.Forms!"
HorizontalOptions="Center"
VerticalOptions="CenterAndExpand" />
</StackLayout>
public MainPage()
{
InitializeComponent();
Testbtn.Clicked += OnClicked;
}
async void OnClicked(object sender, EventArgs e)
{
var btn = sender as Button;
await DisplayAlert("Test", String.Format("Clicked !! {0}", btn.Text), "OK");
}
更改布局后,应用会重新生成,但事件不会触发...
<Grid Margin="5">
<Grid.RowDefinitions>
<RowDefinition Height="3.333" />
<RowDefinition Height="3.333" />
<RowDefinition Height="3.333" />
</Grid.RowDefinitions>
<StackLayout Grid.Row="2" >
<Button x:Name="btnTest" Text="Click Me" />
<Button x:Name="btnTest1" Text="And Another" />
</StackLayout>
</Grid>
public MainPage()
{
InitializeComponent();
Testbtn.Clicked += OnClicked;
Testbtn1.Clicked += OnClicked;
}
async void OnClicked(object sender, EventArgs e)
{
var btn = sender as Button;
await DisplayAlert("Test", String.Format("Clicked !! {0}", btn.Text), "OK");
}
您的按钮在XAML中的命名与在后面的代码中所引用的不同。您所拥有的是:
<Button x:Name="btnTest" Text="Click Me" />
<Button x:Name="btnTest1" Text="And Another" />
所以后面的代码应该是:
btnTest.Clicked += OnClicked;
btnTest1.Clicked += OnClicked;
而不是:
Testbtn.Clicked += OnClicked;
Testbtn1.Clicked += OnClicked;