質問するログイン新規登録

Q&A

解決済

1回答

2427閲覧

Xamarinのボタンクリック時にID?を取得して分岐処理

Anon_

総合スコア334

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Xamarin

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

0グッド

0クリップ

投稿2018/04/26 06:41

0

0

お世話になります。

Xamarin.Formsを勉強しています。

2点質問させてください。
下記のボタンクリック時にNameかIDのようなものを取得し、
Redirect_page()関数の中で分岐処理を加えたいと考えております。

質問1.分岐処理を目的とした場合、XamlのButton属性に設定すべき値はx:Nameは適切でしょうか?

<Button x:Name="btn1" Text="page1に遷移" Clicked="Redirect_page" HorizontalOptions="Center" VerticalOptions="Center" /> <Button x:Name="btn2" Text="page2に遷移" Clicked="Redirect_page" HorizontalOptions="Center" VerticalOptions="Center" />

また、Redirect_page()の中で下記のようにNameを取得しようとしたのですが、
下記エラーが表示され取得できませんでした。

”エラー CS1061 'object' に 'Name' の定義が含まれておらず、型 'object' の最初の引数を受け付ける拡張メソッド 'Name' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足していないことを確認してください。

private void Redirect_page(object sender, EventArgs e) { sender = (Button)sender.Name; }

質問2.Name属性を取得するにはどのように記述すると取得できるのでしょうか。

よろしくお願いいたします。

気になる質問をクリップする

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

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

guest

回答1

0

ベストアンサー

質問1.分岐処理を目的とした場合、XamlのButton属性に設定すべき値はx:Nameは適切でしょうか?

実現はできるので、適当と言えると思います。

他には、主にUIテストで使われる、 AutomationId も使えますが、目的が異なるのであまり推奨はされないでしょう。

<Button x:Name="btn1" AutomationId="BTN001"

質問2.Name属性を取得するにはどのように記述すると取得できるのでしょうか。

XAML に定義した x:Name 属性を取得することは通常できません。
x:Name に指定した名称は、その名前で Page 内で使える変数が自動的に生成されています。

それを踏まえて条件分岐をするには、

private void Redirect_page(object sender, EventArgs e) { if (object.ReferenceEquals(sender, btn1)) { // btn1 をおした時 } else if (object.ReferenceEquals(sender, btn2)) { // btn2 をおした時 } }

とするのが通常でしょう。
sender には押されたボタンのオブジェクトが格納されるので、 btn1btn2 と参照が一致するかでどちらが押されたかが判ります。

投稿2018/04/26 07:47

amay077

総合スコア1075

Anon_

2018/04/26 08:00

適切な回答をありがとうございます! 仰る方法でできました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.25%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問