XAML in Xamarin.Forms 基礎篇 電子書

特別說明

2017/02/24

Xamarin FAQ 2-21 : 在ListView中,在每筆紀錄內要綁定的命令,如何指定對應到檢視模型內

問題

當想在 ListView 的每筆紀錄上,綁定一個手勢操作命令,或者按鈕命令;您把要綁定的命令寫在頁面 ViewModel 中,可是,卻發現到當進行 ListView 每筆紀錄上的操作,這些 ICommand 都不會被執行,該如何解決此一問題呢?

解答

這樣的問題也是有兩個以上的解法可以來運用,不過,我通常都是使用這樣的作法。
首先,使用 x:Name 設定頁面的物件名稱,例如 x:Name="ThisPage"
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:prism="clr-namespace:Prism.Mvvm;assembly=Prism.Forms"
             prism:ViewModelLocator.AutowireViewModel="True"
             x:Class="XFListView.Views.PullToRefreshPage"
             x:Name="ThisPage"
             Title="下拉更新" >
接著,在綁定命令的時候,使用 x:Reference 參考到頁面的 BindingContext 物件下的 ICommand 物件。
另外,想要讓 ICommand 取得您點選的 ListView 紀錄項目,可以使用 CommandParameter="{Binding}" ,將這筆紀錄回傳到 ICommand 命令內。
                        <BoxView 
                        BackgroundColor="White" >
                            <BoxView.GestureRecognizers>
                                <TapGestureRecognizer Command="{Binding Path=BindingContext.點擊Command, Source={x:Reference ThisPage}}" CommandParameter="{Binding}" />
                            </BoxView.GestureRecognizers>
                        </BoxView>
Xamarin-跨平台手機應用程式設計入門-粉絲團

沒有留言:

張貼留言