Xamarin.FormおよびC#初心者です。
初歩的なところで詰まっているのかもしれませんが、お力をお貸しください。
前提・実現したいこと
商品一覧画面から任意の商品行をタップ/ロングタップで別画面に遷移、というアプリを作っています。
最終的に実現したいことは、商品行をタップ/ロングタップした場合にそれぞれ異なるイベントを紐づけること、です。
以下ページを参考にジェスチャの設定をしようとしています。
https://docs.microsoft.com/ja-jp/xamarin/xamarin-forms/app-fundamentals/gestures/tap
https://www.buildinsider.net/mobile/xamarintips/0035
現在、XAMLでタップイベントを追加することは出来ているのですが(以下xamlソースのコメントアウト箇所がそれに当たります)
ロングタップの方はカスタムレンダラーを使ってC#で実装するしかなさそうだったので、
それであればタップもC#側で実装できないかなと思い試してみたところ、うまくいきません。
何か自分が見落としているところなどあれば、教えていただけないでしょうか。
よろしくお願いいたします。
(Gridに対してC#側で紐づけが難しければ、タップはXamlで実装、ロングタップは実装を断念するつもりです。)
該当のソースコード
以下ソースで実際にデバッグしたとき、一覧の任意の商品をタップしても無反応の状態。
C#
1 var grid = new Grid(); 2 var tapGestureRecognizer = new TapGestureRecognizer(); 3 tapGestureRecognizer.Tapped += (s, e) => { 4 ListBodyList_ItemTapped(s,e); 5 }; 6 grid.GestureRecognizers.Add(tapGestureRecognizer);
Xaml
1 <ScrollView x:Name="MyScrollView" 2 Style="{StaticResource MyScrollView}"> 3 <!--一覧--> 4 <StackLayout x:Name="ListBodyList" 5 BindableLayout.ItemsSource="{Binding _BodyList}" 6 Orientation="Vertical"> 7 <BindableLayout.ItemTemplate> 8 <DataTemplate> 9 <Grid RowSpacing="0" 10 BackgroundColor="{Binding BodyStatusColor}" 11 HeightRequest="80" 12 Margin="0" 13 Padding="0"> 14 <!--<Grid.GestureRecognizers> 15 <TapGestureRecognizer Tapped="ListBodyList_ItemTapped"></TapGestureRecognizer> 16 </Grid.GestureRecognizers>--> 17 <Grid.ColumnDefinitions> 18 <ColumnDefinition Width="*" /> 19 <ColumnDefinition Width="130" /> 20 </Grid.ColumnDefinitions> 21 <Grid.RowDefinitions> 22 <RowDefinition Height="25" /> 23 <RowDefinition Height="*" /> 24 </Grid.RowDefinitions> 25 <Label Grid.Row="0" Grid.Column="0" 26 Text="{Binding ShoCd, StringFormat=' {0:00000} '}" 27 Style="{StaticResource lblShoCd}" /> 28 ...(一部省略)... 29 <Label Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" 30 Text="{Binding ShoName}" 31 Style="{StaticResource lblShoNm}" 32 LineBreakMode="CharacterWrap" /> 33 </Grid> 34 </DataTemplate> 35 </BindableLayout.ItemTemplate> 36 </StackLayout> 37
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/23 04:40