我有下面的xaml,我希望itemsControl中的项目可以拉伸并始终触摸窗口的左侧和高度。我在HorizontalAlignment="Stretch"
或/和ScrollViewer
ItemsControl
<Window x:Class="myClass"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" Title="myTitle"
Height="300" Width="300"
ResizeMode="CanResizeWithGrip">
<Grid>
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalAlignment="Stretch" Background="Blue" Width="300">
<ItemsControl Name="myItemControl" HorizontalAlignment="Stretch" ItemsSource="{Binding myItemList}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid Margin="0,0,0,5">
<Grid.ColumnDefinitions>
<ColumnDefinition MinWidth="15" />
<ColumnDefinition MinWidth="100" />
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Id}" Grid.Column="0"/>
<TextBlock Text="{Binding Name}" Grid.Column="1"/>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</ScrollViewer>
</Grid>
答案 0 :(得分:0)
你的伸展在ItemsControl上,它将拉伸ItemsControl,而不是项目。如果要拉伸项目,则需要在ItemTemplate中拉伸网格。
答案 1 :(得分:0)
您的Grid
对象很好地填满了您的ItemsControl
。但是,如果您希望实际内容(Id
和Name
)触及左侧和右侧,则需要将第二个TextBlock
对齐到右侧。默认情况下,TextBlock
控件与左侧对齐。
<TextBlock HorizontalAlignment="Right" Text="{Binding Name}" Grid.Column="1"/>
Stretch
选项只会带你到目前为止。它实际上不会拉伸TextBlock
中的文本,因为这会创建变形文本;不是大多数人想要的效果。这就是您实际内容的左右对齐方式。