【问题标题】:How to get id values from listpicker?如何从 listpicker 获取 id 值?
【发布时间】:2014-04-09 14:46:54
【问题描述】:

我正在开发 windows Phone 8 应用程序。

在我的应用程序中,我使用列表选择器。列表选择器值是从 Web 服务绑定的(json 格式)

我的网络服务结果返回格式

[
   - {
       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;
    }

如果我的问题不清楚,请告诉我提供更多信息...

我需要这样的

列表选择器输出是这样的

披萨

美食

在 SelectionChanged 事件上

如果我点击披萨,我需要得到“9”

如果我点击 Fine Dining 我需要得到“10”

谢谢...

【问题讨论】:

  • 您可以通过多种方式做到这一点。如果您想以“正确的方式”进行操作,您将使用转换器类。如果你想用“简单的方法”来做,只需将文本框标签值绑定到你想要的 id。然后通过选择更改在后端检索它
  • @AMR 请给我看一些转换器类的示例
  • 这是一个巨大的话题。请自己做一些研究谷歌上有很多例子。

标签: c# xaml windows-phone-8 listpicker


【解决方案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);

【讨论】:

  • 您的代码在列表选择器中绑定了名称,但是我如何在选择更改事件中获取所选项目的 ID?
  • @Gurunathan 编辑了在 selectionchanged 事件处理程序中的操作
  • 如何清除listpicker中选中的值并设置为默认值
猜你喜欢
  • 1970-01-01
  • 2015-10-23
  • 2023-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-17
  • 2020-05-19
  • 1970-01-01
相关资源
最近更新 更多