c# – WPF ListBoxItem不会拉伸到最大宽度
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – WPF ListBoxItem不会拉伸到最大宽度,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3085字,纯文字阅读大概需要5分钟。
内容图文
我是WPF的新手.我试图使OrderItemsTmpl模板中的第一列拉伸到可用的最大宽度,但它不起作用,宽度只能达到文本内部的宽度.我不想使用绝对值.怎么解决这个?谢谢
<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,即使你应用Horizo??ntalAlignment =“Stretch”也不会拉伸到最大宽度
我不得不使用其他面板,但是有人知道可以使用什么吗?
解决方法:
问题出在ListBox的控件模板中.您正在使用WrapPanel并将其对齐到左侧.使用StackPanel并允许它拉伸(默认值):
<ControlTemplate TargetType="{x:Type ListBox}">
<Border
CornerRadius="8"
BorderThickness="2">
<ScrollViewer>
<StackPanel
IsItemsHost="True"
Orientation="Vertical" />
</ScrollViewer>
</Border>
</ControlTemplate>
或者,您可以直接使用ItemsPresenter控件而不是面板. ListBox默认使用VirtualizingStackPanel,它也可以为您提供虚拟化(您已禁用).
内容总结
以上是互联网集市为您收集整理的c# – WPF ListBoxItem不会拉伸到最大宽度全部内容,希望文章能够帮你解决c# – WPF ListBoxItem不会拉伸到最大宽度所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。