2012-02-09 2 views
1

이 DataGrid의 왼쪽 위 요소를 스타일링하여 모든 행을 선택하지만 어떻게 작성해야할지 모르겠습니다. 누구든지 나를 위해 모범을 보입니까? 아니면 스타일을 결정해야하는 요소를 아는 사람이 있습니까?WPF Toolkit Datagrid, SelectorAll 스타일 지정

My Datagrid는 WPF Toolkit btw에서 제공됩니다. 우선

enter image description here

답변

2

, 나는 WPFToolkit를 설치에 의지하지 않고 WPF 데이터 그리드를 사용할 수 있도록 당신이 .NET 4.0으로 업데이트 좋을 걸.

이제 문제에 대한, 당신은 당신의 데이터 그리드에 스타일을 설정해야하고, 스타일, 템플릿 또는 자원 내에서 이러한 종류의 코드 넣어 :

<Style TargetType="{x:Type Button}" x:Key="{ComponentResourceKey ResourceId=DataGridSelectAllButtonStyle, TypeInTargetAssembly={x:Type DataGrid}}"> 
     <EventSetter Event="PreviewMouseDown" Handler="SelectAllButtonPreviewMouseDownHandler" /> 
     <EventSetter Event="PreviewMouseUp" Handler="SelectAllButtonPreviewMouseUpHandler" /> 
     <Setter Property="ToolTip" Value="{Binding SelectAllButtonToolTip, RelativeSource={RelativeSource AncestorType=DataGrid}}" /> 
     <Setter Property="Content" Value="{Binding SelectAllButtonContent, RelativeSource={RelativeSource AncestorType=DataGrid}}" /> 
     <Setter Property="Focusable" Value="False" /> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type Button}"> 
        <Grid Background="Transparent" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"> 
         <Polygon Name="Arrow" 
           HorizontalAlignment="Right" 
           VerticalAlignment="Bottom" 
           Margin="0,0,3,3" 
           Points="0,9 9,9 9,0" 
           Fill="Black" 
           Opacity="0.15" 
           Visibility="Collapsed"/> 
         <ContentPresenter Name="ContentSite" /> 
        </Grid> 
        <ControlTemplate.Triggers> 
         <Trigger Property="Content" Value="{x:Null}"> 
          <Setter TargetName="ContentSite" Property="Visibility" Value="Collapsed"/> 
          <Setter TargetName="Arrow" Property="Visibility" Value="Visible"/> 
         </Trigger> 
         <Trigger Property="IsMouseOver" Value="True"> 
          <Setter TargetName="Arrow" Property="Opacity" Value="0.75"/> 
         </Trigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
    </Style> 

(이 중 일부 코드의 샘플입니다 MyDataGrid.Resources, MyDataGrid는 DataGrid에서 파생 된 클래스입니다.)

편집 : 중요한 부분은 당연히 버튼의 스타일 선언자에 x:Key="{ComponentResourceKey ResourceId=DataGridSelectAllButtonStyle, TypeInTargetAssembly={x:Type DataGrid}}"입니다.

+0

이미 .net 4.0 프레임 워크가 있습니다. 그럼에도 불구하고 WPF Toolkit Datagrid는 훨씬 강력합니다. – KroaX

+0

실제로, 아니요. 그것은 정확히 같습니다. WPFToolKit은 .net 3.5 프레임 워크가 아니지만 .net 4.0 버전에 추가 된 DataGrid와 같은 다음 .net 릴리스에서 제공되는 미리보기를 가져올 수 있습니다 (WPFToolkit 사용을 렌더링 함). 이 경우에는 moot) – David

관련 문제