2011-01-04 13 views
1

グリッドに表示されるコンテンツがラップするように、Silverlight DataGridのスタイルを設定しようとしています。私は各グリッドの行(およびグリッドのヘッダー)を1つではなく2つのセルの行で構成します。これにより、各行がより大きくなりますが、すべてのフィールドを表示するために水平方向にスクロールするのではなく、すべてのコンテンツを同時に表示することができます。私が見Silverlight DataGridでラップされた行

Screenshot (私は直接画像を投稿するのに十分な担当者を持っていないが、上記のリンクはあなたの例のスクリーンショットが表示されます)

:ここで私はつもり何説明するのに役立つ画像です私はどのように異なるセルのスタイルをカスタマイズすることができますテンプレートが、私はそれらのセルが画面上で互いに横に表示される方法を制御することができます何かを見ていないよ。

答えて

1

ここでは、DataGridを放棄して代わりにListViewを使用し、ListView内で独自のデザインのUserControlを表示することをお勧めします。私は、私が構築したアプリケーションのために何か類似したことをしました

ListViewのXAMLでは、ItemContainerStyleを設定し、カスタムUserControl(グリッドを使用して行/列とそのスパンを設定できる)を表示することができます。それは基本的に次のようになります。

<ListView 
     Name="_listView" 
     Grid.Row="0" Grid.Column="0" 
     SelectionMode="Single" 
     IsSynchronizedWithCurrentItem="True" 
     SelectedItem="{Binding SelectedAgent, Mode=TwoWay}" 
     ItemsSource="{Binding Agents, Mode=OneWay}" 
     GridViewColumnHeader.Click="ListView_Click" 
     DependencyProperties:ListBoxClickCommand.ClickCommand="{Binding ShowAgentDetailsCommand}"> 
     <ListView.ItemContainerStyle> 
     <Style TargetType="ListViewItem"> 
      <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="ListViewItem"> 
       <Border 
        Name="_border" 
        Padding="2" 
        CornerRadius="5" 
        SnapsToDevicePixels="true" 
        Background="Transparent"> 
        <Controls:AgentStateControl></Controls:AgentStateControl> 
       </Border> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsSelected" Value="True"> 
        <Setter TargetName="_border" Property="Background" Value="CornflowerBlue" /> 
        </Trigger> 
       </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
      </Setter> 
     </Style> 
     </ListView.ItemContainerStyle> 

AgentStateControlは私のカスタムコントロールであり、それは2つの行を持って、第二の列に大きなスパンを持っています。必要に応じてそのコントロールを作成することができます。

+0

ありがとうございます。私はグリッドがこのようなスタイルをサポートしていないと確信していました。 –

関連する問題