Почему стекпанель ломает мой сводный просмотрщик?
У меня есть работающий сводник с 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 и т. Д.
Надеюсь это поможет.