2011-01-04 5 views
1

그리드에 표시된 내용이 래핑되도록 Silverlight DataGrid의 스타일을 지정하려고합니다. 각 격자 행 (및 표 머리글)을 하나의 셀 대신 두 줄의 셀로 구성해야합니다. 이렇게하면 각 행이 더 커지지 만 모든 필드를 보려면 가로로 스크롤하지 않아도 모든 내용을 화면에 동시에 표시 할 수 있습니다. (내가 직접 이미지를 게시 할 수있는 충분한 담당자가 없지만 위의 링크가 당신에게 예를 들어 스크린 샷이 표시됩니다)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 내 사용자 지정 컨트롤, 그리고 두 개의 행이 : 그것은 기본적으로 다음과 같습니다. 원하는 컨트롤을 만들 수 있습니다.

+0

감사합니다. 그리드가 이런 종류의 스타일링을 지원하지 않을 것이라고 확신했지만 확실하게 싶었습니다. –