質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.33%

  • Xamarin

    534questions

    Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

Xamarin.Formsで自動でファイルを生成させたくない

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 639

nasama

score 9

前提・実現したいこと

書籍を参考に、文字を入力するとボタンが有効になるプログラムを作っています。
しかし、App13.Droid.MainPage.xaml.g.csが勝手に生成され、

System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.


というエラーコードが表示されます。
中身を全部削除して保存すると配置エラーが発生し、ファイルを直接削除しても自動的に生成されてしまいます。
このコードを生成させずに正常に動作させるにはどうしたらよいでしょうか?

追記(4/16)
正常に動作するプログラムですが、下記ページに記載されている「StackLayout」までの内容は正常に動作していました。
https://www.xlsoft.com/jp/products/xamarin/xamarin_forms_intro.html

該当のソースコード

App.xaml.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Xamarin.Forms;

namespace App13
{
    public partial class App : Application
    {
        public App ()
        {
            InitializeComponent();

            MainPage = new App13.MainPage();
        }

        protected override void OnStart ()
        {
            // Handle when your app starts
        }

        protected override void OnSleep ()
        {
            // Handle when your app sleeps
        }

        protected override void OnResume ()
        {
            // Handle when your app resumes
        }
    }
}


MainPage.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:App13"
             x:Class="App13.MainPage"    
            >
    <StackLayout>

        <Label x:Name="text1" Text="文字を入力してください"></Label>
        <Entry x:Name="entry1" Text=""></Entry>
        <Button x:Name="btn1" Text="クリック!"></Button>
        <Button.Triggers>
            <DataTrigger TargetType="Button" Binding="{Binding Source={x:Reference entry1},
                Path=Text.Length}" Value="0">
                <Setter Property="IsEnabled" Value="False">
                </Setter>
            </DataTrigger>
        </Button.Triggers>
    </StackLayout>

</ContentPage>


App13.Droid.MainPage.xaml.g.cs

//------------------------------------------------------------------------------
// <auto-generated>
//     このコードはツールによって生成されました。
//     ランタイム バージョン:4.0.30319.42000
//
//     このファイルへの変更は、以下の状況下で不正な動作の原因になったり、
//     コードが再生成されるときに損失したりします。
// </auto-generated>
//------------------------------------------------------------------------------

namespace App13 {
    using System;
    using Xamarin.Forms;
    using Xamarin.Forms.Xaml;


    public partial class MainPage : global::Xamarin.Forms.ContentPage {

        [System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Forms.Build.Tasks.XamlG", "0.0.0.0")]
        private global::Xamarin.Forms.Label text1;

        [System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Forms.Build.Tasks.XamlG", "0.0.0.0")]
        private global::Xamarin.Forms.Entry entry1;

        [System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Forms.Build.Tasks.XamlG", "0.0.0.0")]
        private global::Xamarin.Forms.Button btn1;

        [System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Forms.Build.Tasks.XamlG", "0.0.0.0")]
        private void InitializeComponent() {
            this.LoadFromXaml(typeof(MainPage));
            text1 = this.FindByName<global::Xamarin.Forms.Label>("text1");
            entry1 = this.FindByName<global::Xamarin.Forms.Entry>("entry1");
            btn1 = this.FindByName<global::Xamarin.Forms.Button>("btn1");
        }
    }
}
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • amay077

    2017/04/15 00:04

    ファイルが生成されること自体は問題ではありません。 「正常に動作するプログラム」はお持ちなのでしょうか? いずれの単純なプログラムも動作しないなら環境構築の問題である可能性があります。 「とあるプログラムは動作する」のであれば、それと質問されているエラーが発生するプログラムとは何が違うのでしょうか? という辺りを整理されて質問を修正されないと、回答を得るのは難しいと思います。

    キャンセル

  • nasama

    2017/04/15 09:14 編集

    失礼いたしました。「とあるプログラム」とは動作すればどのようなものでもいいということでしょうか?試した内容を追記しました

    キャンセル

回答 1

checkベストアンサー

+2

~.g.csはxamlファイルなどをコンパイルされるときに生成されるファイルで、それが存在すること自体は正しいです。
問題は、Button.TriggersがButtonタグの外側に記載されていることです。
つぎのように記載すれば動作します。

<?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="App1.MainPage">
    <StackLayout>

        <Label x:Name="text1" Text="文字を入力してください"></Label>
        <Entry x:Name="entry1" Text=""></Entry>
        <Button x:Name="btn1" Text="クリック!">
            <Button.Triggers>
                <DataTrigger TargetType="Button" Binding="{Binding Source={x:Reference entry1},
                Path=Text.Length}" Value="0">
                    <Setter Property="IsEnabled" Value="False">
                    </Setter>
                </DataTrigger>
            </Button.Triggers>
        </Button>
    </StackLayout>
</ContentPage>

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/04/17 00:31

    ありがとうございます!期待どおりの動作ができました!タグの閉じ場所間違えたら今回のエラーが出るのですね。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.33%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • Xamarin

    534questions

    Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。