0

こんにちは皆さん、私は少し問題があります。誰かが私を助けてくれることを願っています。次のようなデータを提供するjson URLがあります。

[
  {
    "nom": "fofo",
    "appGuid": "79fa058b-395a-438d-b66f-d751faea82e0"
  },
  {
    "nom": "fifi",
    "appGuid": "8b6bfcdb-d286-46e2-889e-0168a782323f"
  },
  {
    "nom": "toto",
    "appGuid": "65DE39E7-0130-4836-BBD3-7051574018B6"
  },
  {
    "nom": "titi",
    "appGuid": "66DE39E7-0130-4836-BBD3-7051574018B6"
  }
]

私のクラス :

public class ListApplication
    {

            public string nom { get; set; }
            public string appGuid { get; set; }

    }

私はリストピッカーを持っています:

リストピッカーで要素「nom」だけをバインドしたいので、この方法を試しましたが、何も機能しません: 最初の方法:

WebClient visio = new WebClient();
            visio.DownloadStringCompleted += new DownloadStringCompletedEventHandler(vision_DownloadStringCompleted);
            visio.DownloadStringAsync(new Uri("https://......... "));

void vision_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
        {
            if (e.Error != null)
                return;
            JArray jArray = JArray.Parse(e.Result);
            List<ListApplication> apps = new List<ListApplication>();

            for (int i = 0; i < jArray.Count; i++)
            {
                JObject app = (JObject)jArray[i];
                apps.Add(new ListApplication { nom = (string)app["nom"], appGuid = (string)app["appGuid"] });
                this.Application.ItemsSource = apps;
                //
            }

2 番目の方法:

 public Appli()
        {
            InitializeComponent();
            this.Type_info.ItemsSource = Action;
            this.Periode.ItemsSource = Per;
            var w = new WebClient();
            Observable.FromEvent<DownloadStringCompletedEventArgs>(w, "DownloadStringCompleted").Subscribe(r =>
              {
                  var deserialized =
                    JsonConvert.DeserializeObject<List<ListApplication>>(r.EventArgs.Result);
                  Application.ItemsSource = deserialized;
              });
            w.DownloadStringAsync(
              new Uri("https://........"));
        }

そして、XAML の listpicker に Itemsource= {Binding nom} を追加しました

どんな助けでも私はとても感謝しています、そして私の英語に申し訳ありません

4

2 に答える 2

0

大丈夫です、私は答えを見つけました、私はこれを2番目の方法で使用しました

<toolkit:ListPicker x:Name="listPicker" Header="Application" >
                <toolkit:ListPicker.ItemTemplate>
                    <DataTemplate>
                        <StackPanel>
                            <TextBlock Text="{Binding nom}" />
                        </StackPanel>
                    </DataTemplate>
                </toolkit:ListPicker.ItemTemplate>
            </toolkit:ListPicker>
于 2012-08-08T12:11:16.480 に答える
0

バインディングが有効になっていないことを求めていると思います。つまり、リスト内のデータを表示できません。

その場合、リスト ピッカーの DataContext を List に設定していますか? また、より多くの JSON データを受け取ると、リスト ピッカーの内容が変更されることを期待しているようです。その場合は、リストの代わりに ObservableCollection を使用することをお勧めします。

于 2012-08-07T10:01:28.777 に答える