目前,我正在努力让控件在 WPF 中以框形显示,而无需编写代码。这是我希望它看起来像的一个工作示例:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="120"/>
<RowDefinition Height="3" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal">
<Button Margin="6" VerticalAlignment="Stretch" Width="{Binding Path=ActualHeight, Mode=OneWay, RelativeSource={RelativeSource Self}}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Image Source="http://blog.joeclarmusic.com/images/rss-icon.jpg" />
<TextBlock Foreground="Black" TextAlignment="Center" Grid.Row="1" FontSize="11" Text="{Binding Path=Name}" Margin="0, 5, 0, 0" HorizontalAlignment="Center" TextWrapping="Wrap" />
</Grid>
</Button>
</StackPanel>
<GridSplitter Grid.Row="1" Background="#DDDDDD" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" />
</Grid>
好的,这一切都很好。在我当前的设计中,我使用 ItemsControl 并显示图像列表。由于这样的列表可能超过窗口的宽度,我想在 StackPanel 周围添加 ScrollViewer,其中 VerticalScrollBar 被禁用(因为我只希望它从左到右流动,我只需要 HorizontalScrollBar)。
添加 ScrollViewer 后:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="120"/>
<RowDefinition Height="3" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<ScrollViewer>
<StackPanel Orientation="Horizontal">
<Button Margin="6" VerticalAlignment="Stretch" Width="{Binding Path=ActualHeight, Mode=OneWay, RelativeSource={RelativeSource Self}}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Image Source="http://blog.joeclarmusic.com/images/rss-icon.jpg" />
<TextBlock Foreground="Black" TextAlignment="Center" Grid.Row="1" FontSize="11" Text="{Binding Path=Name}" Margin="0, 5, 0, 0" HorizontalAlignment="Center" TextWrapping="Wrap" />
</Grid>
</Button>
</StackPanel>
</ScrollViewer>
<GridSplitter Grid.Row="1" Background="#DDDDDD" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" />
</Grid>
在我的计算机中运行 kaxaml 1.7.1 时的上述图像:jonatan.nilsson.is/wpf_with_scrollviewer.jpg
如果您在 Kaxaml(或 WPF 窗口/页面)中运行它,您的按钮现在将继续变得越来越大(宽度和高度)。我所做的唯一更改是在 StackPanel 周围添加 ScrollViewer。其他一切都一样,那么为什么在滚动查看器中它会继续变大?
我在这里做错了什么?
编辑:添加了第二个示例的结果图像。