2017-03-20 5 views
1

私のアプリのカレンダーコンポーネントを作成しようとしています。現在、私はカレンダービューに取り組んでいます。これは7日分の月を表示するためのもので、毎日はイベントのリストです。UWPで固定数の列を持つグリッドビューを作成する方法はありますか?

これを行うには、GridViewに連絡する必要があります。私は常に、各行に7つの要素を挟むように書式設定しておきたいと考えています。基本となるコレクションには、常に7つの要素の倍数が含まれます。

<local:ExtendedGridView x:Name="gridView" Margin="0" 
          IsSwipeEnabled="True"          
          IsItemClickEnabled="True" 
          SelectionMode="Single" 
          ItemsSource="{Binding GroupCollection}" 
          VerticalAlignment="Stretch" 
          HorizontalAlignment="Stretch"> 

     <local:ExtendedGridView.DataContext> 
      <local:MainViewModel/> 
     </local:ExtendedGridView.DataContext> 
     <local:ExtendedGridView.Resources>     
      <DataTemplate x:Key="DefaultGridItemTemplate"> 
       <Grid Width="100*" Height="60*" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> 
        <local:ExtendedListView Margin="0" 
              IsSwipeEnabled="False" 
              IsItemClickEnabled="True" 
              ItemsSource="{Binding Group}"> 
         <local:ExtendedListView.ItemContainerStyle> 
          <Style 
           TargetType="ListViewItem"> 
           <Setter 
            Property="HorizontalAlignment" 
            Value="Stretch" /> 
           <Setter 
            Property="VerticalAlignment" 
            Value="Stretch" /> 
          </Style> 
         </local:ExtendedListView.ItemContainerStyle> 

         <local:ExtendedListView.Resources> 
          <DataTemplate x:Key="DefaultInnerListItemTemplate"> 
           <TextBlock Text="{Binding Data}" 
               FontSize="12" Foreground="Green"/> 
          </DataTemplate> 
         </local:ExtendedListView.Resources> 
         <local:ExtendedListView.ItemTemplate> 
          <Binding Source="{StaticResource DefaultInnerListItemTemplate}"/> 
         </local:ExtendedListView.ItemTemplate> 
        </local:ExtendedListView> 
       </Grid> 
      </DataTemplate> 

      <ItemsPanelTemplate x:Key="DefaultGridPanelTemplate"> 
       <WrapGrid MaximumRowsOrColumns="7" Orientation="Horizontal" HorizontalChildrenAlignment="Stretch" VerticalChildrenAlignment="Stretch"> 
       </WrapGrid> 
      </ItemsPanelTemplate> 
     </local:ExtendedGridView.Resources> 
     <local:ExtendedGridView.ItemContainerStyle> 
      <Style 
       TargetType="GridViewItem"> 
       <Setter 
        Property="HorizontalAlignment" 
        Value="Stretch" /> 
       <Setter 
        Property="VerticalAlignment" 
        Value="Stretch" /> 
      </Style> 
     </local:ExtendedGridView.ItemContainerStyle> 
     <local:ExtendedGridView.ItemTemplate> 
      <Binding Source="{StaticResource DefaultGridItemTemplate}"/> 
     </local:ExtendedGridView.ItemTemplate> 
     <local:ExtendedGridView.ItemsPanel> 
      <Binding Source="{StaticResource DefaultGridPanelTemplate}"/> 
     </local:ExtendedGridView.ItemsPanel> 
    </local:ExtendedGridView> 

それが現在どのように見えるか:

Screenshot of GridView

を私は現在、(ExtendedGridView/ExtendedListViewGridView/ListView同じ基本的であり、任意の視覚的な変換を行いません)持って何

XAMLを使うのはかなり新しいですから、まったく別のルートをとるべきでしょう。どんな助けやアドバイスも感謝しています。

+0

DefaultGridItemTemplateのグリッドの高さを下げてみましたか? –

+0

@KenTucker確かに、同じ幅になります。ハードコードされたwidthプロパティのためにのみ、スクリーンショットに7列あります。ギャップはそれに反応しない。 –

+1

このスレッドを見るhttp://stackoverflow.com/questions/38240134/reduce-the-bottom-and-top-space-in-listview-in-xamluwp-universal-windows-platfo –

答えて

2

このグリッドビューを表示し、それに応じて列幅を修正する必要がある別の画面に対して複数のビジュアル状態を作成することができれば、素晴らしいことでしょう。これに従うことができますlink

+0

私のソフトウェアはタブレットとPCの両方で使用されていますが、誤解を招くかもしれませんが、それはオプションではありません。 –

+0

考えてくれてありがとう^ -^ –

+0

wc .................................. .... :) –

関連する問題