单击时XAML按钮不会触发?

时间:2015-10-17 14:56:10

标签: c# wpf xaml xamarin

我有一个XAML布局(见下文),有许多按钮。他们以前都在工作,但既然我已经更新了一些尺寸和位置,一个人不再工作了?它出现了,但点击它不会触发相关的C#代码。

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
             xmlns:local="clr-namespace:My_App;assembly=My_App"
             x:Class="My_App.HomePage"
             Title="Home Page">
    <ContentPage.Padding>
        <OnPlatform x:TypeArguments="Thickness" iOS="7, 40, 7, 10" />
    </ContentPage.Padding>
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="120" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
            <RowDefinition Height="30" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
             <ColumnDefinition Width="130" />
             <ColumnDefinition Width="*" />
             <ColumnDefinition Width="40" />
           </Grid.ColumnDefinitions>  
           <Button x:Name="NewDeviceButton" Image="add.png" 
                   HorizontalOptions="Center"
                   VerticalOptions="FillAndExpand"
                   Grid.Row="7" Grid.Column="2" />
        </Grid>
    </ContentPage>

C#代码如下:

namespace My_App
{
    public partial class HomePage : ContentPage
    {
        // Class Definitions 
        IAdapter adapter;

        public HomePage(IAdapter adapter)
        {
        NewDeviceButton.Clicked += async (sender, e) => {
            debug.writeline ("Button Press");
            devices.Clear();
            adapter.StartScanningForDevices (0x180D.UuidFromPartial ());
        }
    }
}

我真的不明白为什么按钮正在渲染和显示,但没有正常工作?

2 个答案:

答案 0 :(得分:0)

您是否可能忘记更改代码中的命名空间? 我在你的Xaml文件中看到你使用Gas_Sense命名空间,而你的C#代码引用My_App命名空间... (只是检查 - 请不要觉得冒犯: - )。

另一个猜测:你如何创建HomePage? 如果它是从Xaml自动创建的,则问题可能是只调用默认构造函数而不是构造函数接受IAdapter参数。尝试将调试行移动到构造函数的开头,看看是否到达Clicked +=行。

答案 1 :(得分:0)

好的,我发现了问题!按钮的行和列都定义为40px。我认为这会限制按钮并阻止其工作?将行大小更改为auto解决了问题。虽然现在已经增加了几个issues的布局!