簡體   English   中英

LongListSelector數據與點擊圖像綁定以顯示消息框

[英]LongListSelector data binding with tap image to show message box

我創建了一個帶有文本塊和圖像的LongListSelector,然后單擊標題以顯示所選職員姓名,然后單擊圖像以顯示另一個消息框。 如果單擊名稱,則消息框顯示成功。 當我單擊圖像時,圖像的消息框顯示成功,但同時顯示了職員姓名的消息框。 我該如何解決這個問題?

我正在使用下面的代碼:

 <phone:PhoneApplicationPage.Resources>
    <DataTemplate x:Key="TileDataTemplate">
        <Grid Background="{StaticResource TransparentBrush}"
              Margin="0, 0, 0, 12" Height="60">
            <TextBlock Text="{Binding Name}" Margin="60, 10, 0, 0" FontSize="24" Height="60">
            </TextBlock>
            <Image x:Name="delete" Tap="delete_Tap" Grid.Column="0" Source="/Assets/AppBar/Delete.png" Height="40" Width="40"
                            Margin="0, 6, 0, 5" HorizontalAlignment="Right" VerticalAlignment="Top" />
        </Grid>
    </DataTemplate>
</phone:PhoneApplicationPage.Resources>


 <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
        <phone:LongListSelector
                SelectionChanged="MainLongListSelector_SelectionChanged"
                Margin="10,6,0,0" 
                ItemsSource="{Binding Staff.Items}"
                LayoutMode="Grid"
                GridCellSize="400,80"
                ItemTemplate="{StaticResource TileDataTemplate}"
                />
    </Grid>

結果如下圖所示:

在此處輸入圖片說明

背后的代碼:

private void MainLongListSelector_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
   LongListSelector selector = sender as LongListSelector;
   StaffData data = selector.SelectedItem as StaffData;
   MessageBox.Show(data.Name);
}

private void delete_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
   MessageBox.Show("delete?");
}

請教我如何解決此問題。 謝謝。

您將要停止事件的傳播,所以e.Handled = true; 在您要讓事件停止的處理程序中。

從有關Handled的文檔中:

“獲取或設置一個值,該值將路由事件標記為已處理。Handled的真實值可防止沿事件路由的大多數處理程序再次處理同一事件。”

發件人不是LongListSelector,而是用戶點擊的圖片,因此為null。

基本上,您只想檢索用戶點擊過的項目? 在這種情況下,請使用被點擊控件的DataContext屬性來檢索它:

private void GetName_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
   var element = (FrameworkElement)sender;
   StaffData data = (StaffData)element.DataContext;
   MessageBox.Show(data.Name);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM