Как определить выбранный элемент в виде сетки - PullRequest
0 голосов
/ 21 октября 2019

С учетом 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 с полем int32_t с именем id.

и функцией щелчка, которая выглядит следующим образом:

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

Как получить идентификатор элемента, по которому щелкнули в функции favour_Clicked?

1 Ответ

2 голосов
/ 21 октября 2019

В событии favour_clicked вы можете получить выбранный класс FavoriteBinder с помощью метода e.ClickedItem () и использовать метод .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();
}
...