Настройка ListBox WP7 - PullRequest
       17

Настройка ListBox WP7

1 голос
/ 19 июля 2011

Я хочу отобразить данные, извлеченные ранее в настраиваемом списке, но метод, который я нашел для извлечения этих данных, не облегчает мне задачу, поэтому я бы нашел способ отобразить свои данные без изменения метода чтения XML , Вот как я хочу, чтобы мой список был (xml):

 <ListBox Height="516" HorizontalAlignment="Left" Margin="16,74,0,0" Name="listBox1" VerticalAlignment="Top" Width="430" >
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal" Height="132">
                        <Image Source="{Binding  wkpinImage}" Height="73" Width="73" VerticalAlignment="Top" Margin="0,10,8,0"/>
                        <StackPanel Width="370">
                            <TextBlock Text="{Binding Day}" Foreground="#FFC8AB14" FontSize="28" />
                            <TextBlock Text="{Binding Low}" TextWrapping="Wrap" FontSize="24" />
                            <TextBlock Text="{Binding High}" TextWrapping="Wrap" FontSize="24" />
                            <TextBlock Text="{Binding Condition}" TextWrapping="Wrap" FontSize="26" />
                        </StackPanel>
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

И это метод чтения xml (c #):

  while (reader.Read())
            {
                switch (reader.Name)
                {
                    case ("day_of_week"):
                        {
                            listBox1.Items.Add(new ListBoxItem()
                              {
                                  Content = reader.GetAttribute("data")
                              });
                            Day = Content.ToString();
                        } break;

...

Ответы [ 2 ]

0 голосов
/ 11 июля 2012

На мой взгляд, лучшее решение ВСЕГО - это сериализация XML!

Вы должны просто создать сериализуемый класс (ПОМНИТЕ: - использовать базовые типы данных (в противном случае вам понадобятся свойства перевода) - только общедоступные свойства)можно сериализовать - сохранить конструктор БЕЗ параметров)

...
using System.Xml.Serialization;

public class SerializableClass
{
    [XmlAttribute(AttributeName = "Day")]
    public int Day
    {
        get
        {
            ...
        }
        set
        {
            ...
        }
    }

    [XmlIgnore]
    public CustomEnumerationType PublicPropertyNotToReadWrite
    {
        get
        {
            ...
        }
        set
        {
            ...
        }
    }

    ...
}

Чем использовать эти статические методы для сериализации (ВЫВОД объекта вашего класса ЧТО-ТО [например. XML-файл / поток]) и десериализации (ВХОД ОТНЕЧТО [например, XML-файл / поток] В новый экземпляр объекта вашего класса):

(СЛЕДУЮЩИЕ 2 СТАТИЧЕСКИХ МЕТОДА МОГУТ ЧИТАТЬ / НАПИСАТЬ СЕРИАЛИЗИРУЕМЫЙ ОБЪЕКТ ИЗ / В ФАЙЛ ИЗОЛИРОВАННОГО ХРАНЕНИЯ !!)1008 *

открытый статический объект DeserializeObject (string fileName, Type objectType) {using (IsolatedStorageFile appStorage = IsolatedStorageFile.GetUserStoreForApplication ()) using (IsolatedStorageFileStream fileStream = appStorage.OpenFile (fileName, FileMode) usingTextReader xmlReader = new StreamReader (fileStream)) {XmlSerializer xmlSerializer = new XmlSerializer (objectType);

            return xmlSerializer.Deserialize(xmlReader);
        }
    }

    public static void SerializeObject(string fileName, object target, Type objectType)
    {
        using (IsolatedStorageFile appStorage = IsolatedStorageFile.GetUserStoreForApplication())
        using (IsolatedStorageFileStream fileStream = appStorage.OpenFile(fileName, FileMode.Create, FileAccess.Write))
        using (TextWriter xmlWriter = new StreamWriter(fileStream))
        {
            XmlSerializer xmlSerializer = new XmlSerializer(objectType);

            xmlSerializer.Serialize(xmlWriter, target);
        }
    }

По моему мнению, нет ничего лучше, чем этот подход!

Надеюсь, это поможет вам!

0 голосов
/ 19 июля 2011

Я бы рекомендовал использовать подход MVVM для привязки элементов к вашему списку.

Вот очень хороший учебник о том, как MVVM привязать элементы к списку:

http://www.labo -dotnet.com / post / Создание вашего первого MVVM-silverlight-application-on-windows-phone-7.aspx

В MVVM есть много положительных моментов:

  • Меньше кодирования
  • Ваша привязка может быть оптимизирована для огромных источников данных
  • упрощение обслуживания
  • код очистки
  • ...
...