2014-10-09 2 views
0

Я обновляю приложение для сводного просмотра и сталкиваюсь с следующей проблемой. Надеюсь, у кого-то будет ответ, поскольку я застрял.PivotViewer не показывает изображения, если слишком много свойств pivotviewer

Проблема: при загрузке страницы сторона со свойствами и другими функциями загружается нормально, но торговые карты не загружают изображения. Некоторые из них загружают белый фон по умолчанию, а большинство показывают темно-серый, почти черный фон. Все они могут быть увеличены и отображены все свойства, но нет изображений.

Отладка: я обнаружил, что комментирование некоторых свойств заставляет изображения загружаться правильно каждый раз. Если я прокомментирую только 1 или 2, то изображения будут загружаться некоторое время (около 2 из 10 обновлений страницы). В настоящее время в списке содержится 29 свойств, и данные загружаются из базы данных, а затем используются в pivotviewer.ItemsSource.

Любые идеи?

код с некоторыми изменениями имен (вариант два один является один со свойствами я закомментировать):

MainPage.xaml.cs

public MainPage() 
    { 
     InitializeComponent(); 

     PivotViewModel pivotModel = new PivotViewModel(); 
     CollectionsComboBox.SelectedIndex = 0; 
     this.DataContext = pivotModel; 
    } 

    private void DropDown_ItemSelected(object sender, EventArgs e) 
    { 
     // Process selected index change here 
     if (((ComboBox)sender).SelectedValue == "Option One") 
     { 
      OptionOnePivotViewModel OptionOnePivot = new OptionOnePivotViewModel(); 
      PivotViewer.ItemsSource = OptionOnePivot.Data; 
      PivotViewer.PivotProperties = OptionOnePivot.PivotProperties; 
      PivotViewer.ItemTemplates = OptionOnePivot.TemplateCollection; 
      PivotViewer.ItemAdornerStyle = blankAdorner; 
     } 
     else 
     { 
      OptionTwoPivotViewModel OptionTwoPivot = new OptionTwoPivotViewModel(); 
      PivotViewer.ItemsSource = OptionTwoPivot.Data; 
      PivotViewer.PivotProperties = OptionTwoPivot.PivotProperties; 
      PivotViewer.ItemAdornerStyle = basicAdorner; 
      PivotViewer.ItemTemplates = OptionTwoPivot.TemplateCollection; 
     } 
    } 

OptionTwoPivotViewModel.cs:

public OptionTwoPivotViewModel() 
     { 
      DomainContext = new OptionTwoDomainContext(); 
      Data = DomainContext.Load(DomainContext.GetHRDatasQuery()).Entities; 
      PivotProperties = getPivotProperties(); 
      SmallTemplate = "EmpSmall"; 

      TemplateCollection = new PivotViewerItemTemplateCollection() 
       { 
       (PivotViewerItemTemplate) Application.Current.Resources[SmallTemplate] 
       }; 
     } 

     private List<PivotViewerProperty> getPivotProperties() 
     { 
      List<PivotViewerProperty> properties = new List<PivotViewerProperty> 
      { 
       new PivotViewerStringProperty{ Id="Name", Options=PivotViewerPropertyOptions.CanSearchText, DisplayName="Name", Binding=new System.Windows.Data.Binding("Name")}, 
       new PivotViewerStringProperty{ Id="Status", Options=PivotViewerPropertyOptions.CanFilter, DisplayName="Status", Binding=new System.Windows.Data.Binding("Status")}, 
       new PivotViewerDateTimeProperty{ Id="StartDate", Options=PivotViewerPropertyOptions.CanFilter, DisplayName="Start Date", Binding=new System.Windows.Data.Binding("StartDate")}, 
       //additional properties follow... 
     }; 
      return properties; 

Редактировать: Я заметил, что если я установил точку останова в следующем атрибуте getter, продолжите изображение, также загрузите штраф.

public ImageSource BackgroundImage 
     { 
      get 
      { 
       string location = Image_Location; 
       location = location.Substring(location.LastIndexOf("/")); 
       Uri uri; 

       if (Image_Location.Contains(".gif")) 
       { 
        uri = new Uri(Image_Location, UriKind.Absolute); 
       } 
       else 
       { 
        var host = Application.Current.Host.Source.Host; 
        uri = new Uri("https://" + host + "/fileLibrary/employees/images/500"+location, UriKind.RelativeOrAbsolute); 
       } 

       // set the image source 
       BitmapImage bmpImg = new BitmapImage(uri); 
       _loaded = _backgroundImage != null; 
       if (!_loaded) 
       { 
        bmpImg.ImageOpened += ImageOpened; 
        bmpImg.ImageFailed += ImageFailed; 
       } 
       return new BitmapImage(uri); 
      } 
+0

Не могли бы вы добавить свой код в вопрос? – matsjoyce

+0

Добавлено. Дайте мне знать, если вам нужны дополнительные разделы кода. – Trinak

ответ

0
 TemplateCollection = new PivotViewerItemTemplateCollection() 
      { 
      (PivotViewerItemTemplate) Application.Current.Resources[SmallTemplate] 
      }; 

Не назначая недвижимость в инициализаторе выше?

+0

Я не уверен, что понимаю, что вы имеете в виду. Показанный инициализатор просто загружает шаблон элемента. Я не думаю, что это имеет какое-то отношение к свойствам. Шаблон выглядит так: <Ширина сетки = "500" Высота = "571" Фон = "Белый"> <Источник изображения = "{ Binding BackgroundImage} "/> Trinak

Смежные вопросы