XAML in Xamarin.Forms 基礎篇 電子書

XAML in Xamarin.Forms 基礎篇 電子書
XAML in Xamarin.Forms 基礎篇 電子書

Xamarin.Forms 快速入門 電子書

Xamarin.Forms 快速入門 電子書
Xamarin.Forms 快速入門 電子書

2017/02/12

Xamarin FAQ 2-12 : 在ListView裡面的項目,若有按鈕,如何偵測使用有點擊這個按鈕

問題

這個問題在於使用者可以點選 ListView 的任何紀錄,並且 ListView 會根據使用者點選特定紀錄,做出相對應的反應;可是,每筆紀錄上,都會有個按鈕控制項,若使用者點擊了這個按鈕,我們必須做出其他相對應的反應;面對這樣的需求,該如何處理呢?

解答

這個時候,您可以在 ViewCell 內,加入一個按鈕控制項,在這個按鈕控制項中,宣告 Command="{Binding 進行互動Command}" CommandParameter="{Binding .}" 這樣的屬性,也就是說,當使用者點選每個 ListView 紀錄上的按鈕時候,就會執行 ViewModel 內的這個 進行互動Command 命令,並且會把當時這個紀錄資料,傳遞到 ICommand 物件內。
      <ListView.ItemTemplate>
        <DataTemplate>
          <ViewCell>
            <Grid
              >
              <Grid.ColumnDefinitions>
                <ColumnDefinition Width="70" />
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="120" />
              </Grid.ColumnDefinitions>
              <BoxView Grid.Column="0" BackgroundColor="{Binding FavoriteColor}"
                       VerticalOptions="Center" HorizontalOptions="Center"
                       HeightRequest="40" WidthRequest="40"/>
              <StackLayout Grid.Column="1" Orientation="Vertical">
                <Label
                  TextColor="Teal" FontSize="14"
                  Text="{Binding Name}" />
                <Label
                  TextColor="Teal" FontSize="14"
                  Text="{Binding Birthday, StringFormat='{0:yyyy-MM-dd}'}" />
              </StackLayout>
              <Button Grid.Column="2"
                      Text="進行互動"
                      Command="{Binding 進行互動Command}"
                      CommandParameter="{Binding .}"
                      />
            </Grid>
          </ViewCell>
        </DataTemplate>
      </ListView.ItemTemplate>
    </ListView>
Xamarin-跨平台手機應用程式設計入門-粉絲團

沒有留言:

張貼留言