【发布时间】:2019-07-10 23:50:24
【问题描述】:
在转到UWP 之前学习WPF 的基本概念。在我的 WPF 项目中遵循 XAML 显示如下窗口。
我试图在StackPanel 的右侧显示Rectangle 和Button,并且需要Rectangle(不是按钮)控件来自动填充StackPanel。
我尝试了没有 Width 属性但没有 Width 属性的 HorizontalAlignment="Stretch",整个矩形缩小到 0 宽度。不想硬编码宽度值(如果可能),以便应用程序的窗口根据它所在的设备(屏幕分辨率)自行调整。但是,如果使用硬编码的宽度值仍然可以实现这种情况,请也告诉我这种方法。
窗口:
XAML:
备注:我认为ListBox 没有起到任何作用(与这篇文章有关)。只有ListBox 上方ListItemsControl 内的控件可能需要适当调整。但我可能错了。
<Window x:Class="WPFProject.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow"
Height="376"
Width="337">
<Grid>
<ItemsControl>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch" Height="10">
<Rectangle x:Name="myRectangle" Fill="#FFF4F4F5" HorizontalAlignment="Right" Height="9" Margin="0,0,0,0" Stroke="Black" VerticalAlignment="Top" Width="100" RenderTransformOrigin="0.533,0.6"/>
<Button Content="" HorizontalAlignment="Right" Height="10" VerticalAlignment="Top" FontSize="5" FontWeight="Bold"/>
</StackPanel>
</ItemsControl>
<ListBox HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="0,11,0,81" ScrollViewer.HorizontalScrollBarVisibility="Disabled" x:Name="myList" SelectionChanged="myList_ContextMenuClosing">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel IsItemsHost="True" Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<Rectangle Fill="{Binding FirstName}" ToolTip="{Binding FullName}" Width="20" Height="20" Stroke="#FF211E1E" OpacityMask="Black" StrokeThickness="1" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Button x:Name="btnTest" Content="Test" HorizontalAlignment="Left" Margin="250,298,0,0" VerticalAlignment="Top" Width="75" Click="BtnTest_Click"/>
</Grid>
</Window>
【问题讨论】:
-
如果 ListBox 没有发挥作用,那么它不应该出现在您发布的代码中。就此而言,您为什么将
StackPanel放在ItemsControl中?
标签: wpf xaml stackpanel