2015-02-09 64 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>