2012-02-09 5 views
1

Я хочу создать верхний левый элемент этого Datagrid, который выбирает все строки, но я не знаю, как это сделать. У кого-нибудь есть пример для меня или кто-нибудь знает, какой элемент мне нужно стилизовать?WPF Toolkit Datagrid, Styling the SelectorAll

Мой Datagrid поставляется с WPF Toolkit кстати.

enter image description here

ответ

2

первую очередь, я бы посоветовал вам обновить до .net 4.0, чтобы иметь возможность использовать WPF DataGrid, не прибегая к установке WPFToolkit.

теперь, как для вашего вопроса, вы должны установить стиль вашего DataGrid, и внутри стиля, шаблон или ресурс поместить подобный код:

<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 framework. Тем не менее WPF Toolkit Datagrid намного мощнее, не так ли? – KroaX

+0

фактически, нет. Это точно то же самое. WPFToolKit позволяет вам получать предварительные просмотры того, что происходит в следующих выпусках .net, например DataGrid, которые не были в среде .net 3.5, но были добавлены в версию .net 4.0 (с использованием WPFToolkit спор в этом случае) – David

Смежные вопросы