Xamarin XamlParseException找不到方法

时间:2018-04-19 14:11:49

标签: c# xaml xamarin

我的应用程序在Visual Studio中的Nougat模拟器中运行正常,但是当我将其加载到手机上时无法启动和崩溃。设备日志显示XamlParseException找不到方法btnIn1_Click。如果我在我的代码隐藏中注释掉btnIn1,除了btnIn2_Click之外我给出了同样的错误。

我已经搜索了SO,以了解我的Xamarin应用中发生了什么。 我最接近的是:Xmarin.Forms.Xaml.XamlParseException no method found

该问题中的一个答案提到光标在XAML中的click事件并按F12。当我这样做时,我会收到消息"无法导航到定义"对我说这个事件没有得到承认。

答案中的解决方案说清洁和重建......我已经做了很多次没有运气。

因此,如果有人可以查看我的代码并且可能找出我失踪的内容。 这是我的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"
             xmlns:local="clr-namespace:VideoSwitcher"
             x:Class="VideoSwitcher.MainPage"
             Padding="0,20,0,0">

    <Grid BackgroundColor="White"
          Padding="5"
          ColumnSpacing="3"
          RowSpacing="3">
        <Grid.RowDefinitions>
            <RowDefinition Height=".5*"/>
            <RowDefinition Height="*"/>
            <RowDefinition Height=".5*"/>
            <RowDefinition Height="*"/>
            <RowDefinition Height=".5*"/>
            <RowDefinition Height="*"/>
            <RowDefinition Height=".5*"/>
        </Grid.RowDefinitions>
        <Label Grid.Row="0"
               Grid.ColumnSpan="2"
               Text="System Video Switcher"
               TextColor="Black"/>

        <Button Grid.Row="1"
                Grid.Column="0"
                x:Name="btnIn1"
                Text="Input 1"
                BackgroundColor="Firebrick"
                TextColor="White"
                Clicked="btnIn1_Click"/>
        <Button Grid.Row="1"
                Grid.Column="1"
                x:Name="btnIn2"
                Text="Input 2"
                BackgroundColor="Firebrick"
                TextColor="White"
                Clicked="btnIn2_Click"/>
        <Button Grid.Row="3"
                Grid.Column="0"
                x:Name="btnOut1"
                Text="Output 1"
                BackgroundColor="Firebrick"
                TextColor="White"
                Clicked="btnOut1_Click"/>
        <Button Grid.Row="3"
                Grid.Column="1"
                x:Name="btnOut2"
                Text="Output 2"
                BackgroundColor="Firebrick"
                TextColor="White"
                Clicked="btnOut2_Click"/>

        <Button Grid.Row="5"
                Grid.ColumnSpan="2"
                x:Name="btnTake"
                Text="Take"
                BackgroundColor="Firebrick"
                TextColor="White"
                Clicked="btnTake_Click"/>
        <Label Grid.Row="6"
               Grid.ColumnSpan="2"
               TextColor="White"
               x:Name="lblStatus" /> 
    </Grid>

</ContentPage>

这里是代码隐藏,正如我所看到的,我的事件已正确定义。

using System;
using Xamarin.Forms;
using Enkadia.Extron.Switchers;

namespace VideoSwitcher
{
    public partial class MainPage : ContentPage
    {

        Switcher swt = new Switcher("192.168.2.50", "admin", "******");

        private int Input { get; set; }
        private int Output { get; set; }



        public MainPage()
        {
            InitializeComponent();
            if (swt.IsConnected != true)
            {
                lblStatus.Text = swt.ConnectionError;
            }
        }

        void btnIn1_Click(object sender, EventArgs e)
        {
            Input = 1;
        }

        void btnIn2_Click(object sender, EventArgs e)
        {
            Input = 2;
        }

        void btnOut1_Click(object sender, EventArgs e)
        {
            Output = 1;
        }

        void btnOut2_Click(object sender, EventArgs e)
        {
            Output = 2;
        }

        void btnTake_Click(object sender, EventArgs e)
        {
            swt.RGBXPoint(Input, Output);
        }
    }
}

欢迎任何想法。

1 个答案:

答案 0 :(得分:0)

您可以通过将iOS项目选项中的“链接器行为”更改为“仅链接框架SDK”来解决此问题。