問題
這個問題在於使用者可以點選 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>