从LongListSelector项中获取值

本文关键字:获取 LongListSelector | 更新日期: 2023-09-27 18:30:01

我用这个模板填充我的LongListSelector:

    <DataTemplate x:Key="LongListSelectorItemTemplate">
        <StackPanel Orientation="Horizontal" Margin="4,4">
            <Grid Tap="Grid_Tap" x:Uid="{Binding Id}">
                <Grid.RowDefinitions>
                    <RowDefinition />
                    <RowDefinition/>
                    <RowDefinition/>
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition />
                    <ColumnDefinition />
                </Grid.ColumnDefinitions>
                <Image Grid.RowSpan="3" Width="150" Height="60" Source="{Binding Logo}" VerticalAlignment="Center"  Margin="0,0,15,0"/>
                <TextBlock Grid.Column="1"  Text="{Binding NazwaSklepu}" FontFamily="/Okazjum;component/Fonts/Fonts.zip#Open Sans" VerticalAlignment="Center" HorizontalAlignment="Left" Foreground="Black" FontSize="32"/>
                <Image Grid.Column="1" Grid.Row="1" Source="1.0_Images/Vector Smart Object.png" VerticalAlignment="Center" HorizontalAlignment="Left" />
                <TextBlock Grid.Column="1" Grid.Row="1" Text="{Binding GodzinyOtwarcia}" FontFamily="/Okazjum;component/Fonts/Fonts.zip#Open Sans Light" VerticalAlignment="Center" HorizontalAlignment="Left" FontSize="14" Foreground="Gray" Margin="25,0,0,0" />
                <Image Grid.Column="1" Grid.Row="2" Source="1.0_Images/Vector Smart Object copy 3.png" VerticalAlignment="Center" HorizontalAlignment="Left"/>
                <TextBlock Grid.Column="1" Grid.Row="2" Text="{Binding Adres}" FontFamily="/Okazjum;component/Fonts/Fonts.zip#Open Sans Light" VerticalAlignment="Center" HorizontalAlignment="Stretch" FontSize="14" Foreground="Gray" Margin="25,0,0,0" x:Name="txtAdres"/>
            </Grid>
            </StackPanel>
    </DataTemplate>

正如你所看到的,我将Tap事件添加到我的网格和绑定id中。

如何在C#事件代码中获取此Id?

从LongListSelector项中获取值

我找到了临时的方法。我把Id放在Tag中,而不是x:Uid并使用了以下代码:

 private void Grid_Tap(object sender, System.Windows.Input.GestureEventArgs e)
    {
        int id = -1;
        var element = (FrameworkElement)sender;
        if (int.TryParse((Grid)element.Tag + "", out id)) {
        ... my code 
        }
    }