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>