Почему стекпанель ломает мой сводный просмотрщик?

У меня есть работающий сводник с 128 изображениями автомобилей, которые я собрал сам. Я использовал один из множества учебников в Интернете, чтобы он заработал, и он работает хорошо. Тогда я подумал, что мне нужно немного украсить страницу, поэтому я поместил сетку, в которой pv находился внутри ограничительной панели стека, с парой текстовых блоков над ней, чтобы сказать, что такое коллекция. Все загружается нормально, кроме изображений. Закомментируйте строки стековой панели, и она отлично работает.

Есть идеи? Как может что-то такое простое потерпеть неудачу?

Вот весь код в MainPage.xaml:

<StackPanel>
    <TextBlock
        FontSize="24"
        HorizontalAlignment="Center"
        VerticalAlignment="Top">
        Silverlight Pivotviewer Example
    </TextBlock>
    <TextBlock
        FontSize="16"
        HorizontalAlignment="Center"
        VerticalAlignment="top">
        Cool Automobiles
    </TextBlock>
    <Grid x:Name="LayoutRoot" Background="White">
        <pivoter:PivotViewer x:Name="pivotViewer" />
    </Grid>
</StackPanel>

3 ответа

Это известная проблема. StackPanel - это безразмерный элемент. Вам нужно добавить значения ширины и высоты в StackPanel, и PivotViewer начнет работать правильно.

Это то, что мы сделали. Мы добавили обработчик события в событие SizeChanged в диалоговом окне, а затем измерили размер PivotViewer. Также после события Initialize или Loaded вызовите его тоже... видите, как вы идете?

  void PivotDialog_SizeChanged( object sender, SizeChangedEventArgs e )
  {
     SizePivotViewer( );
     m_PivotViewer.UpdateLayout( );
  }

  private void SizePivotViewer( )
  {
     m_PivotViewer.Width = ActualWidth;
     m_PivotViewer.Height = ActualHeight - 20; // Magic number so text will display properly at bottom of Pivot!
  }

Ваша Сетка, "LayoutRoot", является вашим основным элементом управления макетом. Вы должны обернуть вашу StackPanel в элемент управления Grid.

Что-то вроде этого:

<Grid x:Name="LayoutRoot" Background="White"
  <StackPanel>
    <TextBlock
        FontSize="24"
        HorizontalAlignment="Center"
        VerticalAlignment="Top">
        Silverlight Pivotviewer Example />
    <TextBlock
        FontSize="16"
        HorizontalAlignment="Center"
        VerticalAlignment="top">
        Cool Automobiles />
    <pivoter:PivotViewer x:Name="pivotViewer" />
  </StackPanel>
</Grid>

После того, как вы объявите вашу Grid, я бы добавил несколько строк, то есть 0, 1, 2. Затем я бы расположил ваши Stackpanels, PivotViewer и т. Д.

Надеюсь это поможет.

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