【问题标题】:How to determine the clicked item in a grid view如何在网格视图中确定单击的项目
【发布时间】:2020-02-17 02:24:33
【问题描述】:

给定一个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>

其中填充了一个 typeFavoriteBinder,它有一个名为 id 的 int32_t 字段。

还有一个看起来像这样的点击函数:

void FavoritesPage::favorite_clicked(
    Windows::Foundation::IInspectable const& sender, 
    Windows::UI::Xaml::RoutedEventArgs const& args) 
{
}

如何获取在 favorite_clicked 函数中被点击的项目的 id?

【问题讨论】:

    标签: c++ xaml uwp winrt-xaml c++-winrt


    【解决方案1】:

    在 favorite_clicked 事件中,您可以通过 e.ClickedItem() 方法获取您点击的 FavoriteBinder 类,并使用 .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();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 2022-07-20
      相关资源
      最近更新 更多