2014-04-09 20 views
0

我正在開發Windows Phone 8應用程序。如何從listpicker獲取id值?

在我的應用我使用列表選擇器.LIST選擇器值從Web服務(JSON格式)

我的Web服務結果返回格式

[ 
    - { 
     id: "9", 
     name: "Pizza", 
     root_id: "4", 
     level: "1" 
    }, 
    -{ 
     id: "10", 
     name: "Fine Dining", 
     root_id: "4", 
     level: "1" 
    }, 
] 

我的列表選擇器XAML代碼綁定

對於綁定
<toolkit:ListPicker x:Name="filterpicker" SelectionChanged="filterpicker_SelectionChanged" Tap="filterpicker_Tap" Foreground="White" BorderThickness="0" Margin="395,-100,0,10" Height="70" Width="60"> 

      <toolkit:ListPicker.ItemTemplate> 
       <DataTemplate> 
        <TextBlock Text="{Binding}" Visibility="Collapsed"/> 
       </DataTemplate> 
      </toolkit:ListPicker.ItemTemplate> 

      <toolkit:ListPicker.FullModeItemTemplate> 
       <DataTemplate> 
        <TextBlock> 
         <Run Text="{Binding}"/> 
        </TextBlock> 
       </DataTemplate> 
      </toolkit:ListPicker.FullModeItemTemplate> 
     </toolkit:ListPicker> 

我的C#代碼

void filterwc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) 
    { 

     var filterdata = e.Result; 
     var filtervalue = JsonConvert.DeserializeObject<List<filterdatas>>(filterdata); 
     List<string> filtercategories = new List<string>(); 
     foreach (filterdatas budval2 in filtervalue) 
     { 
      filtercategories.Add(budval2.id); /**I need to display the name and on selectionchanged event i need to get the id value**/ 
     } 

     filterpicker.ItemsSource = filtercategories; 
    } 

如果我的問題不明確PLZ告訴我給的詳細信息...

我需要一個像這樣

列表選擇器進行放來這樣

比薩

精細餐飲

On SelectionChanged事件

如果我點擊比薩,我需要得到 「9」

如果我點擊美食,我需要得到 「10」

謝謝...

+0

您可以通過多種方式來做到這一點。如果你想這樣做,「正確的方法」你會使用一個轉換器類。如果你想這樣做「簡單的方法」只需將文本框標記值綁定到你想要的標識。然後在你的後端檢索選擇更改 –

+0

@AMR Plz向我展示轉換器類的一些示例 – Gurunathan

+0

這是一個巨大的話題。請自行研究一下谷歌有很多例子。 –

回答

1
 <toolkit:ListPicker.ItemTemplate> 
      <DataTemplate> 
       <TextBlock Text="{Binding name}" Visibility="Collapsed"/> 
      </DataTemplate> 
     </toolkit:ListPicker.ItemTemplate> 

     <toolkit:ListPicker.FullModeItemTemplate> 
      <DataTemplate> 
       <TextBlock> 
        <Run Text="{Binding name}"/> 
       </TextBlock> 
      </DataTemplate> 
     </toolkit:ListPicker.FullModeItemTemplate> 

代碼背後:

var filterdata = e.Result; 
    var filtervalue = JsonConvert.DeserializeObject<List<filterdatas>>(filterdata); 
    filterpicker.ItemsSource = filtervalue; 

選擇更改事件

if(filterpicker.SelectedItem == null) 
    return; 
filterdatas element = filterpicker.SelectedItem as filterdatas; 
MessageBox.Show("This is the id:"+element.id); 
+0

您的代碼綁定列表選擇器中的名稱,但我如何獲得選定chaged事件上的選定項目的Id? – Gurunathan

+0

@Gurunathan編輯與在選擇更改事件處理程序 – csharpwinphonexaml

+0

您的代碼岩石做什麼。它工作正常。 – Gurunathan