2019-1-27-WPF-使用-ItemsPanel-修改方向

titleauthordateCreateTimecategories
WPF 使用 ItemsPanel 修改方向
lindexi
2019-1-27 21:8:9 +0800
2019-01-11 19:53:56 +0800
WPF

在 WPF 很多时候都需要使用 ListView 但是默认的列表是垂直的,如果需要使用水平的,就需要使用 ItemsPanel 设置使用的类

先添加一些代码到资源,下面就可以使用这里的资源

      <Grid.Resources>
            <XmlDataProvider x:Key="InventoryData" XPath="Books">
                <x:XData>
                    <Books xmlns="">
                        <Book ISBN="0-7356-0562-9" Stock="in" Number="9">
                            <Title>XML in Action</Title>
                            <Summary>XML Web Technology</Summary>
                        </Book>
                        <Book ISBN="0-7356-1370-2" Stock="in" Number="8">
                            <Title>Programming Microsoft Windows With C#</Title>
                            <Summary>C# Programming using the .NET Framework</Summary>
                        </Book>
                        <Book ISBN="0-7356-1288-9" Stock="out" Number="7">
                            <Title>Inside C#</Title>
                            <Summary>C# Language Programming</Summary>
                        </Book>
                        <Book ISBN="0-7356-1377-X" Stock="in" Number="5">
                            <Title>Introducing Microsoft .NET</Title>
                            <Summary>Overview of .NET Technology</Summary>
                        </Book>
                        <Book ISBN="0-7356-1448-2" Stock="out" Number="4">
                            <Title>Microsoft C# Language Specifications</Title>
                            <Summary>The C# language definition</Summary>
                        </Book>
                    </Books>
                </x:XData>
            </XmlDataProvider>
        </Grid.Resources>

添加一个 ListView 然后通过 ItemTemplate 设置界面

       <ListView ItemsSource="{Binding Source={StaticResource InventoryData}, XPath=Book}">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <Grid Background="#5a5a5a" Margin="10,10,10,10">
                        <StackPanel Margin="2,2,2,2">
                            <TextBlock Text="{Binding XPath=Title}" />
                            <TextBlock Text="{Binding XPath=@ISBN}" />
                        </StackPanel>
                    </Grid>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>

这里的 DataTemplate 传入的 DataContext 就是 ItemsSource 绑定的列表的每一项

如绑定了 List 那么这里的 DataContext 就是 Foo 类

于是在这里就可以通过绑定 DataContext 的属性绑定界面

上面代码运行可以看到列表是垂直的

如果需要修改为水平的,可以通过 ItemsPanel 修改

            <ListView.ItemsPanel>
                <ItemsPanelTemplate>
                    <StackPanel Orientation="Horizontal" />
                </ItemsPanelTemplate>
            </ListView.ItemsPanel>

代码全部都在 xaml 写,因为神树说在后台写不好

    <Grid>
        <Grid.Resources>
            <XmlDataProvider x:Key="InventoryData" XPath="Books">
                <x:XData>
                    <Books xmlns="">
                        <Book ISBN="0-7356-0562-9" Stock="in" Number="9">
                            <Title>XML in Action</Title>
                            <Summary>XML Web Technology</Summary>
                        </Book>
                        <Book ISBN="0-7356-1370-2" Stock="in" Number="8">
                            <Title>Programming Microsoft Windows With C#</Title>
                            <Summary>C# Programming using the .NET Framework</Summary>
                        </Book>
                        <Book ISBN="0-7356-1288-9" Stock="out" Number="7">
                            <Title>Inside C#</Title>
                            <Summary>C# Language Programming</Summary>
                        </Book>
                        <Book ISBN="0-7356-1377-X" Stock="in" Number="5">
                            <Title>Introducing Microsoft .NET</Title>
                            <Summary>Overview of .NET Technology</Summary>
                        </Book>
                        <Book ISBN="0-7356-1448-2" Stock="out" Number="4">
                            <Title>Microsoft C# Language Specifications</Title>
                            <Summary>The C# language definition</Summary>
                        </Book>
                    </Books>
                </x:XData>
            </XmlDataProvider>
        </Grid.Resources>

        <ListView ItemsSource="{Binding Source={StaticResource InventoryData}, XPath=Book}">
            <ListView.ItemsPanel>
                <ItemsPanelTemplate>
                    <StackPanel Orientation="Horizontal" />
                </ItemsPanelTemplate>
            </ListView.ItemsPanel>

            <ListView.ItemTemplate>
                <DataTemplate>
                    <Grid Background="#5a5a5a" Margin="10,10,10,10">
                        <StackPanel Margin="2,2,2,2">
                            <TextBlock Text="{Binding XPath=Title}" />
                            <TextBlock Text="{Binding XPath=@ISBN}" />
                        </StackPanel>
                    </Grid>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </Grid>

代码 https://gitee.com/lindexi/lindexi_gd/blob/68cefabd097bf2f4fc35e3384f34e1dc622a67ad/PotrallTiscawMouger/PotrallTiscawMouger/MainWindow.xaml

### 回答1: 你可以使用WPF ListViewItemsPanel属性来指定ListView项的布局方式。以下是一种实现横向布局的方法: 1. 在XAML中定义ListView,并将ItemsPanel属性设置为StackPanel: ``` <ListView ItemsSource="{Binding Items}"> <ListView.ItemsPanel> <ItemsPanelTemplate> <StackPanel Orientation="Horizontal" /> </ItemsPanelTemplate> </ListView.ItemsPanel> <ListView.ItemTemplate> <DataTemplate> <TextBlock Text="{Binding}" /> </DataTemplate> </ListView.ItemTemplate> </ListView> ``` 2. 将StackPanel的Orientation属性设置为Horizontal。 这样,ListView的项将以横向布局方式呈现。你可以根据需要调整其它属性,例如间距、对齐方式等。 ### 回答2: WPF(Windows Presentation Foundation)是微软公司推出的用于创建Windows应用程序的框架。ListViewWPF中常用的控件之一,用于显示一组数据项的列表。默认情况下,ListView的布局是纵向的,即数据项按垂直方向排列。如果需要实现ListView的横向布局,可以通过以下几个步骤来实现。 首先,在XAML文件中声明一个ListView控件,并设置其Orientation属性为Horizontal,这将使ListView变为横向布局。 ```csharp <ListView Width="500" Height="200" Orientation="Horizontal"> <!-- 在此处添加数据模板和数据绑定 --> </ListView> ``` 接下来,需要为ListView指定数据模板和数据绑定,以展示列表中的数据项。 ```csharp <ListView Width="500" Height="200" Orientation="Horizontal"> <ListView.ItemTemplate> <DataTemplate> <!-- 在此处定义数据项的布局和样式 --> </DataTemplate> </ListView.ItemTemplate> </ListView> ``` 在DataTemplate中可以定义数据项的布局和样式,例如可以使用StackPanel来水平排列数据项的内容。 ```csharp <ListView Width="500" Height="200" Orientation="Horizontal"> <ListView.ItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal"> <!-- 在此处添加数据项的内容 --> </StackPanel> </DataTemplate> </ListView.ItemTemplate> </ListView> ``` 最后,在代码中通过数据绑定将数据项与ListView关联起来,以实现数据的显示和更新。 综上所述,通过设置ListView的Orientation属性为Horizontal,并在DataTemplate中使用StackPanel来横向布局数据项的内容,再通过数据绑定将数据与ListView关联,即可实现WPFListView的横向布局。 ### 回答3: WPF中的ListView控件默认的布局方式是纵向布局,即列表项垂直排列。如果想要实现ListView的横向布局,可以通过修改ItemPanel的布局方式来实现。 首先,我们需要把ListViewItemsPanel修改为一个横向布局的面板,比如使用WrapPanel或者UniformGrid。通过修改ListView的ItemPanel属性,可以将默认的ItemsPanel修改为横向布局的面板,如下所示: ``` <ListView> <ListView.ItemsPanel> <ItemsPanelTemplate> <WrapPanel Orientation="Horizontal"/> </ItemsPanelTemplate> </ListView.ItemsPanel> <!--其他代码--> </ListView> ``` 这样,ListView中的列表项就会横向排列了。但是需要注意的是,如果内容过多,会导致横向排列的列表项超出窗口范围,因此还需要根据实际情况设置ListView的宽度或者调整WrapPanel的宽度来适应布局。 另外,还可以通过修改ListView的ItemContainerStyle来定制列表项的样式,使其适应横向布局。比如设置列表项的最小宽度、高度、边距等,以及设置水平对齐方式等。 总之,通过修改ListViewItemsPanel和ItemContainerStyle,可以实现ListView的横向布局,使列表项横向排列。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值