2012-06-03 15 views

答えて

5

はい、データグリッドのようにスタイルを設定する必要があります。 (この質問に割り当てたタグに基づいてXAMLで開発していると仮定します)。トリックは、適切な幅、整列などの列を持つグリッドを使用するデータテンプレートを作ることです。

私はListViewを使用して同様のことをしました。これは、行とは対照的に、セルに対してのみ背景を表示するように変更することができます。

ListView simulating the look of a data grid/table

XAML:ご返信用

<ListView 
     VerticalAlignment="Top" 
     Margin="0,5" 
     ItemsSource="{Binding HighestExpensesAlternatingList}" 
     ItemTemplate="{StaticResource HighestExpensesTemplate}" 
     BorderBrush="#19FFFFFF" BorderThickness="1,0,0,0" 
     SelectionMode="None" IsItemClickEnabled="False" 
     ScrollViewer.VerticalScrollBarVisibility="Hidden" 
     ScrollViewer.HorizontalScrollBarVisibility="Hidden" 
     ItemContainerStyle="{StaticResource SimpleListViewItemStyle}" 
     IsHitTestVisible="False"/> 


    <DataTemplate x:Key="HighestExpensesTemplate"> 
     <Grid Width="500" VerticalAlignment="Center" Margin="5,0" 
       Background="{Binding AlternatingIndexBrush}"> 

      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="120" /> 
       <ColumnDefinition Width="*" /> 
       <ColumnDefinition Width="150" /> 
      </Grid.ColumnDefinitions> 

      <TextBlock Grid.Column="0" Margin="5" TextWrapping="NoWrap" 
         Style="{StaticResource BasicTextStyle}" 
         VerticalAlignment="Center" 
         Text="{Binding Item.DateString}" /> 

      <TextBlock Grid.Column="1" Margin="5" TextWrapping="NoWrap" 
         Style="{StaticResource BasicTextStyle}" 
         VerticalAlignment="Center" 
         Text="{Binding Item.Description}" /> 

      <TextBlock Grid.Column="2" Margin="5" TextWrapping="NoWrap" 
         Style="{StaticResource BasicTextStyle}" 
         VerticalAlignment="Center" 
         Text="{Binding Item.AmountStringCurrencyFormat}" 
         HorizontalAlignment="Right"/> 

     </Grid> 
    </DataTemplate> 

<Style x:Key="SimpleListViewItemStyle" TargetType="ListViewItem"> 
    <Setter Property="Background" Value="Transparent"/> 
    <Setter Property="TabNavigation" Value="Local"/> 
    <Setter Property="IsHoldingEnabled" Value="False"/> 
    <Setter Property="IsDoubleTapEnabled" Value="False"/> 
    <Setter Property="IsRightTapEnabled" Value="False" /> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="ListViewItem"> 
       <Border BorderBrush="{TemplateBinding BorderBrush}" 
          BorderThickness="{TemplateBinding BorderThickness}" 
          Background="{TemplateBinding Background}" 
          Margin="{TemplateBinding Margin}"> 

        <VisualStateManager.VisualStateGroups> 
         <VisualStateGroup x:Name="CommonStates"> 
          <VisualState x:Name="Normal"/> 
          <VisualState x:Name="Pressed"> 
           <Storyboard> 
            <PointerDownThemeAnimation TargetName="Container"/> 
           </Storyboard> 
          </VisualState> 
         </VisualStateGroup> 
        </VisualStateManager.VisualStateGroups> 

        <Grid x:Name="Container"> 
         <ContentPresenter x:Name="contentPresenter" 
               ContentTemplate="{TemplateBinding ContentTemplate}" 
               ContentTransitions="{TemplateBinding ContentTransitions}" 
               Content="{TemplateBinding Content}" 
               HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
               Margin="{TemplateBinding Padding}" 
               VerticalAlignment="{TemplateBinding VerticalContentAlignment}" /> 
        </Grid> 
       </Border> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
+0

おかげでこの情報がお役に立てば幸いです。実際には、行ごとに1つの項目を表示しています。列ごとに異なる属性を使用しています。行ごとに3つの項目を表示したいのですが、それぞれの項目を別の列に表示したいと思います。 – Ishti

+1

GridViewのItemsPanelを、Orientation = "Horizo​​ntal"とMaximumRowsOrColumns = "3"というプロパティを持つWrapGridに設定して使用することができると思います。次に、行と列が別々に見えるようにスタイルを設定します。 – Krishna

+0

おかげでたくさんのクリシュナ、あなたが言及したようにWrapGridを使いました。それは私が望んでいた通りに正確に働きました。 ありがとう – Ishti

関連する問題