2015-02-09 19 views
0

是否有人知道是否有可能在Windows Phone 8.1上创建水平列表视图或gridview?WPF Horisontal listview

我试图使一个与此片的XAML代码,它给出了一个垂直取向的列表视图:

<Page 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:local="using:HorzListView" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
xmlns:SampleData="using:Blend.SampleData.SampleDataSource" 
x:Class="HorzListView.MainPage" 
mc:Ignorable="d" 
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 

<Page.Resources> 
    <SampleData:SampleDataSource x:Key="SampleDataSource" d:IsDataSource="True"/> 
    <DataTemplate x:Key="ListDataItemTemplate"> 
     <Grid> 
      <Image Source="{Binding Property3}" Height="79" Width="79"/> 
     </Grid> 
    </DataTemplate> 
</Page.Resources> 

<Grid DataContext="{Binding Source={StaticResource SampleDataSource}}"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*"/> 
    </Grid.ColumnDefinitions> 

    <TextBlock Grid.Row="0" Text="Hello" FontSize="72"></TextBlock> 

    <ListView Grid.Row="1" 
        ItemTemplate="{StaticResource ListDataItemTemplate}" 
        ItemsSource="{Binding ListData}"> 

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

如果我去掉下面的代码块,列表视图得到水平,但它是不可能通过任何项目的滚动:

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

我觉得它有什么做的StackPanel中的ItemsPanel,因为如果我改变方向ŧ o“垂直”它是垂直布局,但滚动不可能。

有什么建议吗?

+0

我用几乎一模一样的设置。在ItemsPanelTemplate中使用'VirtualizingStackPanel'而不是'StackPanel';这将启用滚动。 – 2015-02-10 19:26:57

回答

0

您的ListView行定义需要自动不*

<Grid.RowDefinitions> 
    <RowDefinition Height="Auto"/> 
    <RowDefinition Height="Auto"/> 
</Grid.RowDefinitions> 


<ListView Grid.Row="1" 
       ItemTemplate="{StaticResource ListDataItemTemplate}" 
       ItemsSource="{Binding ListData}"> 

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

对不起,延迟回复,但我被拖到其他项目。我得到了水平滚动工作,这里是我的xaml代码(哦,不能粘贴它,将它添加到buttom) – Mabzy 2015-04-14 18:00:58

+0

你是否也获得了垂直滚动的工作? – 2015-04-14 21:56:26

+0

还没有尝试过。 – Mabzy 2015-04-16 05:39:35

0
<Page 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="using:HorzListView" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:SampleData="using:Blend.SampleData.SampleDataSource" 
    x:Class="HorzListView.MainPage" 
    mc:Ignorable="d" 
    Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 

    <Page.Resources> 
     <SampleData:SampleDataSource x:Key="SampleDataSource" d:IsDataSource="True"/> 
     <DataTemplate x:Key="ListDataItemTemplate"> 
      <Grid> 
       <Image Source="{Binding Property3}" Height="79" Width="79"/> 
      </Grid> 
     </DataTemplate> 
    </Page.Resources> 

    <Grid DataContext="{Binding Source={StaticResource SampleDataSource}}"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="*"/> 
     </Grid.RowDefinitions> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*"/> 
     </Grid.ColumnDefinitions> 

     <TextBlock Grid.Row="0" Text="Hello" FontSize="72"></TextBlock> 

     <ListView Grid.Row="1" 
        VerticalAlignment="Top" 
        ScrollViewer.HorizontalScrollBarVisibility="Auto" 
        ScrollViewer.VerticalScrollBarVisibility="Disabled" 
        ScrollViewer.HorizontalScrollMode="Enabled" 
        ScrollViewer.VerticalScrollMode="Disabled" 
        ScrollViewer.ZoomMode="Disabled" 
        SelectionMode="Single" 
        ItemTemplate="{StaticResource ListDataItemTemplate}" 
        ItemsSource="{Binding ListData}"> 

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