парсинг xml в listpicker

я использую этот код для анализа результата xml в элемент управления listpicker:

     if (e.Error != null)
            return;

        XElement xmlItems = XElement.Parse(e.Result);
        var list = new List<auth>();
        foreach (var response in xmlItems.Descendants("result"))
        {

            var nom = (string)response.Element("nom").Value;
            var id = (string)response.Element("id").Value;
            list.Add(new auth
            {
                state = nom,
                id = id,
            });


        }
        this.defaultPicker.ItemsSource = list;
        this.defaultPicker.DisplayMemberPath = "state";
        <response><status>OK</status><result><id>1</id><nom>ARIANA</nom></result><result><id>2</id><nom>BEJA</nom></result>.....</response>

он возвращает только первый элемент, но когда я нажимаю на список, он переносит меня в список путей класса авторизации! Любые идеи, пожалуйста?


person Zied Nasr    schedule 14.12.2011    source источник
comment
Как выглядит ваш шаблон списка?   -  person Ku6opr    schedule 14.12.2011
comment
‹toolkit:ListPicker HorizontalAlignment=Right Margin=0,239,48,172 Width=407 x:Name=defaultPicker d:LayoutOverrides=GridBox Header=Choisir Gouvernerat : ItemCountThreshold=30› ‹/toolkit:ListPicker› Ps: на самом деле он возвращает мне только первый элемент, но когда я нажимаю на средство выбора списка, он выводит меня на список путей к классу авторизации, другая проблема, этот метод работал, но с 4 или 5 элементами сзади.. я не знаю, большое ли число (24) пунктов на этот раз проблема! Благодарность :)   -  person Zied Nasr    schedule 15.12.2011


Ответы (1)


Вам необходимо создать FullModeItemTemplate с соответствующими привязками, такими как:

<toolkit:ListPicker.FullModeItemTemplate>
    <DataTemplate>
        <StackPanel>
            <TextBlock Text="{Binding state}" />
            <TextBlock Text="{Binding id}" />
        </StackPanel>
    </DataTemplate>
</toolkit:ListPicker.FullModeItemTemplate>
person Ku6opr    schedule 15.12.2011
comment
спасибо Ku6opr, это сработало, но когда я выбираю элемент, он не появляется в списке, как выбранный ... на самом деле он появляется на секунду, а затем возвращается к отображению первого! - person Zied Nasr; 15.12.2011
comment
Проблема в другом месте. Этот код должен работать нормально. Дайте мне больше информации о том, как список зависит от других элементов - person Ku6opr; 15.12.2011
comment
хорошо, я внес некоторые изменения, это возврат c#:if (e.Error != null); XElement xmlItems = XElement.Parse(e.Result); defaultPicker.ItemsSource = из ответа в xmlItems.Descendants (результат) let amt = response.Element (nom) let eb = response.Element (id) select new auth { nom = amt == null? null : amt.Value, id = eb == null ? null : eb.Value, }; defaultPicker.DisplayMemberPath = nom; - person Zied Nasr; 15.12.2011