首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

WP8.1開發指南:ListView項目點擊跳轉頁面並傳遞選中數據的完整實現

     編輯:程式設計綜合問答

問題場景

在`MainPage`的`ListView`點擊項目後,導航至`PetPropertyPage1`並傳遞選中項目的數據。

核心代碼實現


// MainPage.xaml.cs
private void lv_ItemClick(object sender, ItemClickEventArgs e) {
    // 1. 獲取點擊的數據對象(而非ToString())
    var selectedItem = e.ClickedItem as YourDataModel;
    if (selectedItem == null) return;

    // 2. 導航並傳遞完整對象(推薦)或關鍵標識
    this.Frame.Navigate(typeof(PetPropertyPage1), selectedItem);
    
    // 或僅傳遞ID:Frame.Navigate(typeof(PetPropertyPage1), selectedItem.Id);
}

// PetPropertyPage1.xaml.cs
protected override void OnNavigatedTo(NavigationEventArgs e) {
    base.OnNavigatedTo(e);
    
    // 3. 接收參數
    if (e.Parameter is YourDataModel model) {
        // 直接使用完整模型
        this.DataContext = model;
    } else if (e.Parameter is int id) {
        // 根據ID查詢詳情
        LoadDetail(id);
    }
}

XAML綁定關鍵點




    
        
            
        
    

常見錯誤與修正

錯誤寫法問題正確寫法
`lv.SelectedItem.ToString()`返回類型名稱而非數據`e.ClickedItem as Model`
傳遞字符串拼接類型丟失、解析麻煩直接傳遞對象或ID
在構造函數中獲取參數導航未完成,Frame為空重寫`OnNavigatedTo`

進階:複雜參數傳遞


// 傳遞多參數使用匿名類型或元組
Frame.Navigate(typeof(DetailPage), new { PetId = 123, Mode = "Edit", Token = "abc" });

// 接收端
dynamic param = e.Parameter;
int id = param.PetId;
string mode = param.Mode;

總結

關鍵三步:用`e.ClickedItem`獲取數據對象 → `Frame.Navigate`傳遞強類型參數 → `OnNavigatedTo`接收並綁定。拒絕`ToString()`,擁抱強類型導航。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved