Перемещение коллекций Pivotviewer из Silverlight 4 в Silverlight 5

Я просто играю с элементом управления PivotViewer в Silverlight 5. Кажется, что многие вещи улучшились, но у меня есть некоторые проблемы с отображением моего старого .cxml коллекции, которые отлично работали под Silverlight 4

Старый способ кодирования:

InitializeComponent();
MainPivotViewer.LoadCollection("http://localhost:4573/ClientBin/Actresses.cxml",              string.Empty);

переводит сейчас что-то вроде:

InitializeComponent();
CxmlCollectionSource _cxml = new CxmlCollectionSource(new Uri("http://localhost:1541/ClientBin/Actresses.cxml", UriKind.Absolute));
PivotMainPage.PivotProperties = _cxml.ItemProperties.ToList();
PivotMainPage.ItemTemplates = _cxml.ItemTemplates;
PivotMainPage.ItemsSource = _cxml.Items;

Что происходит, так это то, что элементы отображаются, но на панели фильтра ничего не отображается, и, если элемент выбран, для него больше нет описания!

1 ответ

Решение

Что происходит, так это _cxml.ItemsProperties не загружается до CxmlCollectionSource загружает и обрабатывает .cxml файл. CxmlCollectionSource имеет StateChanged событие. Если вы проверите, если State является Loadedтогда вы можете отобразить _cxml свойства к PivotViewer.

Вот пример того, как это будет выглядеть:

        private CxmlCollectionSource _cxml;
    void pViewer_Loaded(object sender, RoutedEventArgs e)
    {
        _cxml = new CxmlCollectionSource(new Uri("http://myurl.com/test.cxml",
                                             UriKind.Absolute));
        _cxml.StateChanged += _cxml_StateChanged;
    }

    void _cxml_StateChanged(object sender,
                           CxmlCollectionStateChangedEventArgs e)
    {
        if(e.NewState == CxmlCollectionState.Loaded)
        {
            pViewer.PivotProperties =
                       _cxml.ItemProperties.ToList();
            pViewer.ItemTemplates =
                       _cxml.ItemTemplates;
            pViewer.ItemsSource =
                       _cxml.Items;
        }
    }

У меня есть более подробное описание этого в моем блоге.

Другие вопросы по тегам