Я новичок в WPF. Я пытаюсь сделать первый столбец в шаблоне OrderItemsTmpl растягиваться до максимальной доступной ширины, но он не работает, ширина зависит только от ширины текста внутри. Я не хочу использовать абсолютное значение. Как это решить? БлагодаряWPF ListBoxItem не растягивается до максимальной ширины
<DataTemplate x:Key="OrderItemsTmpl">
<Grid Background="Brown" HorizontalAlignment="Stretch" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="auto"></ColumnDefinition>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" HorizontalAlignment="Stretch">
<CheckBox Content="{Binding Path=sItemName}" HorizontalContentAlignment="Stretch" ></CheckBox>
<ListBox HorizontalContentAlignment="Stretch"
ItemsSource="{Binding Path=aSinglOptns}"
Margin="20,0,0,0"
ItemTemplate="{StaticResource SinglOptnTmpl}"
Style="{StaticResource SheetListStyle}"
ItemContainerStyle="{StaticResource ListBoxItemStyle}"
>
</ListBox>
</StackPanel>
<TextBlock Grid.Column="1" Text="{Binding Path=fQty}"></TextBlock>
</DataTemplate>
<Style x:Key="ListBoxItemStyle" TargetType="{x:Type ListBoxItem}">
<Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<ContentPresenter></ContentPresenter>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="SheetListStyle" TargetType="{x:Type ListBox}">
<Setter Property="Background" Value="Aqua"></Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBox}">
<Border
CornerRadius="8"
BorderThickness="2">
<ScrollViewer>
<WrapPanel
IsItemsHost="True"
Orientation="Vertical"
HorizontalAlignment="Left"/>
</ScrollViewer>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
ListBox, что содержание пункт
<Grid Background="Pink" Grid.Row="1" >
<Grid.RowDefinitions>
<RowDefinition Height="auto"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock HorizontalAlignment="Center" Text="{Binding Path=sDita}" Grid.Row="0" Grid.Column="0" TextWrapping="Wrap" ></TextBlock>
<ListBox
Grid.Row="1"
Grid.Column="0"
HorizontalContentAlignment="Stretch"
Background="Aqua"
ItemsSource="{Binding Path=aOrderItems}"
Name="OrderItems"
ItemTemplate="{StaticResource OrderItemsTmpl}"
Margin="0,0,0,0"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.CanContentScroll="True"
ItemContainerStyle="{StaticResource ListBoxItemStyle}"
Style="{StaticResource SheetListStyle}">
</ListBox>
</Grid>
UPDATE я понял из <Style x:Key="SheetListStyle">
Я использую WrapPanel, он не будет растягиваться до максимальной ширины, даже применить HorizontalAlignment = "Stretch « Вместо этого я должен использовать другую панель, но кто-нибудь знает, что можно использовать?
Привет, спасибо за помощь. Я преобразовал стекную панель в сетку, но все же она не работает, растягиваясь до максимальной ширины. – William
Спасибо. HorzontalContentAlignment = «Stretch» - это ответ, который решил мою проблему. –
О, черт возьми! Не могу поверить, что я не думал об этом в первую очередь. Спасибо! –