2014-04-09 18 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