如何确定网格视图中单击的项目
How to determine the clicked item in a grid view
给定一个GridView
例如
<GridView IsItemClickEnabled="True" ItemClick="favorite_clicked" ItemsSource="{x:Bind MainViewModel.FavoriteBinders}" Grid.Column="1">
<GridView.ItemTemplate>
<DataTemplate x:DataType="local:FavoriteBinder">
<StackPanel AccessKey="{x:Bind CedictId, Mode=OneWay}" Width="200" Margin="20">
<TextBlock Text="{x:Bind Simplified, Mode=OneWay}" FontWeight="Bold"
/>
<TextBlock Text="{x:Bind Pinyin, Mode=OneWay}" TextWrapping="NoWrap"
/>
</StackPanel>
</DataTemplate>
</GridView.ItemTemplate>
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<ItemsWrapGrid MaximumRowsOrColumns="7"/>
</ItemsPanelTemplate>
</GridView.ItemsPanel>
其中填充了一个类型FavoriteBinder
,其中有一个名为 id 的 int32_t 字段。
点击函数看起来像:
void FavoritesPage::favorite_clicked(
Windows::Foundation::IInspectable const& sender,
Windows::UI::Xaml::RoutedEventArgs const& args)
{
}
如何获取在 favorite_clicked 函数中单击的项目的 ID?
在favorite_clicked事件中,可以通过e.ClickedItem()方法获取点击的FavoriteBinderclass,使用.as方法将对象转换为FavoriteBinder类型。
void FavoritesPage::favorite_clicked(IInspectable const& sender, winrt::Windows::UI::Xaml::Controls::ItemClickEventArgs const& e)
{
WinrtText::FavoriteBinder clickVM = e.ClickedItem().as< WinrtText::FavoriteBinder >();
int32_t clickId = clickVM.CedictId();
}
给定一个GridView
例如
<GridView IsItemClickEnabled="True" ItemClick="favorite_clicked" ItemsSource="{x:Bind MainViewModel.FavoriteBinders}" Grid.Column="1">
<GridView.ItemTemplate>
<DataTemplate x:DataType="local:FavoriteBinder">
<StackPanel AccessKey="{x:Bind CedictId, Mode=OneWay}" Width="200" Margin="20">
<TextBlock Text="{x:Bind Simplified, Mode=OneWay}" FontWeight="Bold"
/>
<TextBlock Text="{x:Bind Pinyin, Mode=OneWay}" TextWrapping="NoWrap"
/>
</StackPanel>
</DataTemplate>
</GridView.ItemTemplate>
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<ItemsWrapGrid MaximumRowsOrColumns="7"/>
</ItemsPanelTemplate>
</GridView.ItemsPanel>
其中填充了一个类型FavoriteBinder
,其中有一个名为 id 的 int32_t 字段。
点击函数看起来像:
void FavoritesPage::favorite_clicked(
Windows::Foundation::IInspectable const& sender,
Windows::UI::Xaml::RoutedEventArgs const& args)
{
}
如何获取在 favorite_clicked 函数中单击的项目的 ID?
在favorite_clicked事件中,可以通过e.ClickedItem()方法获取点击的FavoriteBinderclass,使用.as方法将对象转换为FavoriteBinder类型。
void FavoritesPage::favorite_clicked(IInspectable const& sender, winrt::Windows::UI::Xaml::Controls::ItemClickEventArgs const& e)
{
WinrtText::FavoriteBinder clickVM = e.ClickedItem().as< WinrtText::FavoriteBinder >();
int32_t clickId = clickVM.CedictId();
}