Xamarin.Forms中的设计更改会导致事件失败

问题描述 投票:0回答:1

如果我创建一个新的跨平台应用程序,并在默认布局中添加按钮并添加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");
}
xamarin xamarin.forms xamarin.android
1个回答
0
投票

您的按钮在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;
© www.soinside.com 2019 - 2024. All rights reserved.