2013-04-29 24 views
2

我開發呈現時間表的應用程序,看起來像這樣: my timetableListView控件的時間表

不過,我有幾個問題是:

  1. 當有太多的項目(分鐘)顯示在1行中它應自動分成幾行(例如 06應該被包裹後的所有行)
  2. 我不知道分鐘項目周圍的間距來自哪裏。這不是 項目的邊際。
  3. 用手指滾動時間表列表時,只有在未觸摸分鐘框的情況下才會滾動。否則,分鐘框會移動一點,而不是整個時間表列表中的 。

的時間表列表勢必TimetableHour的一個ObservableCollection instaces:

public class TimetableHour 
{ 
    public sbyte Hour { get; set; } 
    public IList<TimetableItem> Items { get; set; } 

    public string HourString 
    { 
     get { return Hour.ToString("00") + ":"; } 
    } 
} 

和XAML頁面:

<Style TargetType="ListView" x:Key="TimetableListViewStyle"> 
    <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Hidden" /> 
    <Setter Property="Margin" Value="0,0,60,0" /> 
    <Setter Property="ItemTemplate"> 
     <Setter.Value> 
      <DataTemplate> 
       <StackPanel Orientation="Horizontal"> 
        <TextBox Text="{Binding HourString}" 
          Width="60" Height="50" 
          TextAlignment="Center" 
          Background="CornflowerBlue" Foreground="White" BorderThickness="0" 
          FontSize="23" 
          Padding="10"> 
        </TextBox> 

        <GridView ItemsSource="{Binding Items}" Height="Auto" SelectionMode="None" IsTapEnabled="False" IsHoldingEnabled="False" > 
         <GridView.ItemsPanel> 
          <ItemsPanelTemplate> 
           <WrapGrid Orientation="Horizontal" /> 
          </ItemsPanelTemplate> 
         </GridView.ItemsPanel> 
         <GridView.ItemTemplate> 
          <DataTemplate> 
           <StackPanel Background="LightSkyBlue" Width="60" Height="50"> 
            <TextBlock Text="{Binding Minute}" HorizontalAlignment="Center" FontSize="17" FontWeight="Medium" Margin="0,2,0,0"></TextBlock> 
            <TextBlock HorizontalAlignment="Center">Tip</TextBlock> 
           </StackPanel> 
          </DataTemplate> 
         </GridView.ItemTemplate> 
        </GridView> 
       </StackPanel> 
      </DataTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

<ListView Grid.Row="2" Grid.Column="2" ItemsSource="{Binding Timetable}" 
         Style="{StaticResource TimetableListViewStyle}" 
         SelectionMode="None" /> 

回答

1

好了,我想通出來:

  1. 要使分鐘項目包裝,我需要指定確切的寬度用於顯示它們的GridView的。或者我可以用一個網格,而不是一個StackPanel,允許使用所有可用空間 - 見GridView width inherited from parent
  2. 要控制你身邊需要定義
    ItemContainerStyle的GridView項的間距如下所述: Windows8 ListView and space between items
  3. 爲了實現我可以在GridView上設置IsSwipeEnabled =「False」。