Wpf 如何强制元素列表填充包装上的窗口?
我尝试在一个窗口中列出列,我希望在使用*时得到与网格中相同的结果Wpf 如何强制元素列表填充包装上的窗口?,wpf,xaml,listview,autofill,wrappanel,Wpf,Xaml,Listview,Autofill,Wrappanel,我尝试在一个窗口中列出列,我希望在使用*时得到与网格中相同的结果 <ListView ItemsSource="{Binding UcColumns}" HorizontalContentAlignment="Stretch" VerticalAlignment="Stretch" ScrollViewer.VerticalScrollBarVisibility="Di
<ListView ItemsSource="{Binding UcColumns}"
HorizontalContentAlignment="Stretch"
VerticalAlignment="Stretch"
ScrollViewer.VerticalScrollBarVisibility="Disabled"
ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel IsItemsHost="True" Margin="0"
Orientation="Horizontal" Background="WhiteSmoke"
>
</WrapPanel>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</ListView.ItemContainerStyle>
问题是包装内容的宽度和高度取决于它的适当内容,而不是窗口大小
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</ListView.ItemContainerStyle>
我希望你能帮助我
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</ListView.ItemContainerStyle>
Thx.试试这个:
<WrapPanel IsItemsHost="True" Margin="0" Orientation="Horizontal" Background="WhiteSmoke"
Width="{Binding ActualWidth,
RelativeSource={RelativeSource AncestorType={x:Type ScrollContentPresenter}, Mode=FindAncestor}}"
Height="{Binding ActualHeight,
RelativeSource={RelativeSource AncestorType={x:Type ScrollContentPresenter}, Mode=FindAncestor}}">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</ListView.ItemContainerStyle>
我不知道你为什么要在这里使用wrappanel,但是如果你想让你的
listviewitem
内容扩展到listview的宽度,那么你可以将listview.ItemContainerStyle
放在下面:
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</ListView.ItemContainerStyle>
并将itemtemplate设置为:
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</ListView.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<Grid HorizontalAlignment="Stretch">
<local:MyuserControl HorizontalAlignment="Stretch"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
这将扩展您的项目非常感谢您的帮助
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</ListView.ItemContainerStyle>
我把你的答案和其他一些搜索结合起来,解决了这个问题
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</ListView.ItemContainerStyle>
<ListView ItemsSource="{Binding UcColumns}"
HorizontalContentAlignment="Stretch"
VerticalAlignment="Stretch"
ScrollViewer.VerticalScrollBarVisibility="Disabled"
ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</ListView.ItemContainerStyle>
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"></StackPanel>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemTemplate>
<DataTemplate >
<uc:UC_Column HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
Width="{Binding ActualWidth,
Converter={cv:DivideConverter},
ConverterParameter=3,
RelativeSource={RelativeSource AncestorType={x:Type ScrollContentPresenter}, Mode=FindAncestor}}"
Height="{Binding ActualHeight,
RelativeSource={RelativeSource AncestorType={x:Type ScrollContentPresenter}, Mode=FindAncestor}}"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
再一次:谢谢你 它确实会拉伸以填充整个listview。。。您面临什么问题?为什么不在
ItemsPanelTemplate
中使用Grid
?@nit:我想要内容(一个看起来像列的用户控件)水平自动对齐,垂直自动调整到窗口。@Omribitan:这是另一种可能性,但我先试试包装板:)它不起作用,因为包装板的尺寸一直很好。问题来自于内容元素大小不好。
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</ListView.ItemContainerStyle>