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

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

ただいまの
回答率

90.34%

  • C#

    7749questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • Xamarin

    535questions

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

  • XAML

    262questions

    XAML(Extensible Application Markup Language)はWPF、Silverlight、Windows PhoneそしてWindows Store appsでユーザーインターフェースを定義するために使われるXML言語です。

Xamlでボタンを追加したい

解決済

回答 1

投稿

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

TrainRain

score 10

こんにちは。

 前提・実現したいこと

Windows10を使ってVisual Studo 2017でXamarinのプロジェクトを作っています。

https://github.com/ytabuchi/Study/tree/master/XFP_ZXingSample
を参考にQRコードを読もうとしています。
内蔵カメラでQRは読めました。
次に別の処理を追加したいので、testボタンを追加したところ、そのボタンが消えました。
ボタンを追加するにはどうしたらよいでしょう?
UWPのUIの操作なので、ScanPageXaml.xamlに追加してもclassが違うので、たぶん動きません。
MainPageを上書きしているところは特定しました。

 発生している問題・エラーメッセージ

別の処理を追加したいので、testボタンを追加したところ、そのボタンが消えました。

 該当のソースコード

    <Grid Name="target" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <Grid.RowDefinitions>
            <RowDefinition Height="500*"/>
            <RowDefinition Height="50*"/>
        </Grid.RowDefinitions>
        <Button Content="Test" Click="Button_Click" FontSize="50" Grid.Row="1" /><!--これを追加した。-->
    </Grid>
//App.cs
namespace XFP_ZXingSample
{
    public class App : Application
    {
        public App()
        {
            MainPage = new NavigationPage(new ScanPageXaml());//<-ここでMainPageにScanPageXamlを入れて上書きしていると思う。
        }
MainPage.xaml.cs
namespace XFP_ZXingSample.UWP
{
    public sealed partial class MainPage
    {
        public MainPage()
        {
            this.InitializeComponent();

            LoadApplication(new XFP_ZXingSample.App());
            //明示的に追加。でもすでにtargetがないので追加できない。
            var button = new Button();
            target.Children.Add(button);
        }

 補足情報(FW/ツールのバージョンなど)

Intel Pentium(R) CPU 4415 Y 1.60GHz
RAM 8GB
Windows10Pro 64bit 1803 17134.345 
Microsoft Visual Studio Community 2017 
Version 15.8.5
VisualStudio.15.Release/15.8.5+28010.2036
Microsoft .NET Framework
Version 4.7.03056 
インストールされているバージョン:Community 
Visual C++ 2017   00369-60000-00001-AA556
Microsoft Visual C++ 2017 
Application Insights Tools for Visual Studio のパッケージ   8.13.10627.1
Application Insights Tools for Visual Studio 
ASP.NET and Web Tools 2017   15.8.05085.0
ASP.NET and Web Tools 2017 
ASP.NET Core Razor Language Services   15.8.31590
Provides languages services for ASP.NET Core Razor. 
ASP.NET Web Frameworks and Tools 2017   5.2.60618.0
For additional information, visit https://www.asp.net/ 
Azure App Service Tools v3.0.0   15.8.05023.0
Azure App Service Tools v3.0.0 
Azure Functions と Web ジョブ ツール   15.8.05023.0
Azure Functions と Web ジョブ ツール 
C# ツール   2.9.0-beta8-63208-01
C# コンポーネントが IDE で使用されました。プロジェクト タイプと設定に応じて、異なるバージョンのコンパイラを使用できます。 
Common Azure Tools   1.10
Azure Mobile Services および Microsoft Azure Tools で使用する共通サービスを提供します。 
Extensibility Message Bus   1.1.49 (remotes/origin/d15-8@ee674f3)
Provides common messaging-based MEF services for loosely coupled Visual Studio extension components communication and integration. 
JavaScript Project System   2.0
JavaScript Project System 
JavaScript 言語サービス   2.0
JavaScript 言語サービス 
Microsoft Azure Tools   2.9
Microsoft Azure Tools for Microsoft Visual Studio 2017 - v2.9.10730.2 
Microsoft Continuous Delivery Tools for Visual Studio   0.4
Visual Studio IDE 内からの Azure DevOps パイプラインの構成を簡略化しています。 
Microsoft JVM Debugger   1.0
Provides support for connecting the Visual Studio debugger to JDWP compatible Java Virtual Machines 
Microsoft MI-Based Debugger   1.0
Provides support for connecting Visual Studio to MI compatible debuggers 
Microsoft Visual C++ ウィザード   1.0
Microsoft Visual C++ ウィザード 
Microsoft Visual Studio Tools for Containers   1.1
ターゲット環境で ASP.NET Core アプリケーションを開発、実行、検証します。F5 キーを押してコンテナーで直接アプリケーションをデバッグ実行するか、Ctrl + F5 キーを押してコンテナーをリビルドせずにアプリを編集して更新します。 
Microsoft Visual Studio VC パッケージ   1.0
Microsoft Visual Studio VC パッケージ 
MLGen Package Extension   1.0
MLGen Package Visual Studio Extension Detailed Info 
Mono Debugging for Visual Studio   4.11.11-pre (8fb558f)
Support for debugging Mono processes with Visual Studio. 
NuGet パッケージ マネージャー   4.6.0
Visual Studio 内の NuGet パッケージ マネージャー。NuGet の詳細については、http://docs.nuget.org/ にアクセスしてください。 
ProjectServicesPackage Extension   1.0
ProjectServicesPackage Visual Studio Extension Detailed Info 
ResourcePackage 拡張機能   1.0
Visual Studio の拡張機能 ResourcePackage に関する詳細情報 
ResourcePackage 拡張機能   1.0
Visual Studio の拡張機能 ResourcePackage に関する詳細情報 
SQL Server Data Tools   15.1.61808.07020
Microsoft SQL Server Data Tools 
TypeScript Tools   15.8.20822.2001
TypeScript Tools for Microsoft Visual Studio 
Visual Basic ツール   2.9.0-beta8-63208-01
Visual Basic コンポーネントが IDE で使用されました。プロジェクト タイプと設定に応じて、異なるバージョンのコンパイラを使用できます。 
Visual F# Tools 10.2 for F# 4.5   15.8.0.0.  Commit Hash: 55a3dc3231c95c77f81ee53f7d29152029da7408.
Microsoft Visual F# Tools 10.2 for F# 4.5 
Visual Studio Code デバッグ アダプターのホスト パッケージ   1.0
Visual Studio Code デバッグ アダプターを Visual Studio でホストするための相互運用レイヤー 
Visual Studio Tools for Containers   1.0
Visual Studio Tools for Containers 
VisualStudio.Mac   1.0
Mac Extension for Visual Studio 
Xamarin   4.11.0.776 (d15-8@1ae9b59d7)
Xamarin.iOS と Xamarin.Android の開発を有効にする Visual Studio 拡張機能 
Xamarin Designer   4.15.9 (d000f568b)
Visual Studio extension to enable Xamarin Designer tools in Visual Studio. 
Xamarin Templates   1.1.116 (9619170)
Templates for building iOS, Android, and Windows apps with Xamarin and Xamarin.Forms. 
Xamarin.Android SDK   9.0.0.19 (HEAD/a8a3b0ec7)
Xamarin.Android Reference Assemblies and MSBuild support. 
Xamarin.iOS and Xamarin.Mac SDK   12.0.0.15 (84552a4)
Xamarin.iOS and Xamarin.Mac Reference Assemblies and MSBuild support. 
ユニバーサル Windows アプリ用 Visual Studio Tools   15.0.28010.00
ユニバーサル Windows アプリ用 Visual Studio Tools を使用すると、電話、タブレット、PC など、Windows 10 を実行している各デバイスで使用できるユニバーサル アプリの単一ビルドを利用できます。これには Microsoft Windows 10 ソフトウェア開発キットが含まれています。
  • 気になる質問をクリップする

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 1

checkベストアンサー

0

XFP_ZXingSample.UWPは編集しません。
Xamarin.Formsでは共通プロジェクトにUI処理も記述します(今回はXFP_ZXingSample/ScanPageXaml.xamlを編集する必要があります)。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2018/11/15 16:25

    え。そうなんですか!?
    でも、UWPの画面処理をしたいので、PLC(ポータブルクラスライブラリ)である、XFP_ZXingSample/ScanPageXaml.xamlには書けないと思うのですが・・・。
    画面処理をするのにもScanPageXaml.xamlに書くのでしょうか?

    キャンセル

  • 2018/11/15 17:50

    はい、そうです。
    共通プロジェクトで書いたコントロール等が各プラットフォーム(iOS/Android/UWP etc)で表示されます。
    UIの記述も一つにまとめてしまうのがXamarin.Formsの特長です。

    キャンセル

  • 2018/11/19 10:48

    ご回答ありがとうございます。
    まだ書き方がわからないので、補足していただけるととても助かります。
    XFP_ZXingSample/ScanPageXaml.xaml(とScanPageXaml.xaml.cs)は共通処理用かと思います。
    このScanPageXaml.xaml.csのなかで、UWPやiOS, Androidに依存した処理が必要になったら(なっています)どう処理すればよいのでしょう。
    感覚的には最初に質問したとおり、ScanPageXaml.xamlではスキャンだけをして、結果の文字(result.Text)をMainPage.xamlに戻して処理したほうが自然に思えます。
    もしScanPageXaml.xamlで処理するとすると、XFP_ZXingSample(移植可能)のPCLプロジェクトにも、Micsoft.NETCore.UniversalWindowsPlatform.dllなどを参照する必要が出てくるのではないかと思います。
    Q1)UWP依存でもXFP_ZXingSampleでMicsoft.NETCore.UniversalWindowsPlatform.dllなどを参照して処理するのでしょうか?
    Q2)result.TextをMainPage.xaml.csに戻す方法を知りたいです。
    よろしくお願いいたします。

    キャンセル

  • 2018/11/26 11:30

    返信できず申し訳ありません。
    ちょっと古い記事ですが考え方はこちらを参照するといいと思います。
    http://www.atmarkit.co.jp/ait/articles/1612/02/news021.html

    また、その続きの記事に独自処理の作り方も書いてあります。
    http://www.atmarkit.co.jp/ait/articles/1612/02/news021_2.html

    キャンセル

  • 2018/11/26 15:17

    ありがとうございます。

    キャンセル

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

  • C#

    7749questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • Xamarin

    535questions

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

  • XAML

    262questions

    XAML(Extensible Application Markup Language)はWPF、Silverlight、Windows PhoneそしてWindows Store appsでユーザーインターフェースを定義するために使われるXML言語です。