Wie lautet der Elementname im grünen Kreis? Whta ist das Ereignis entsprechend Klicken Sie auf dieses Element? Wie lautet der Name für das Element im grünen Kreis?
Antwort
In mindestens einem Beispiel habe ich festgestellt, dass durch Klicken auf das graue Dreieck in der Ecke alle Zeilen ausgewählt werden.
Aber das ist keine integrierte Funktion dieser Steuerung, soweit ich weiß. Es ist Teil einer benutzerdefinierten Vorlage.
dieses Beispiel Siehe: http://www.dotnetspark.com/kb/2941-styling-wpf-datagrid.aspx
Wenn Sie das Beispiel herunterladen und die Ressourcen/DataGridCustomization.xaml Datei für „SelectAll“ suchen, werden Sie den Teil der Vorlage finden, der diese Funktion enthält.
Ich nenne es die Schaltfläche "Alle auswählen". Es hat jedoch keinen offiziellen Namen. Es werden auch keine Stileigenschaften angezeigt. Für eine einfache Methode, um es über angefügten Eigenschaften, Stil, finden Sie unter:
Colin E.
+1 für den Link, sehr hilfreich. Ich hatte fast genau das selbe getan wie in diesem Post, um diesen verdammten Knopf zu stylen, da ich zu der Zeit nichts hilfreiches gefunden hatte. Es ist wirklich ärgerlich, dass MS es nicht störte, es zu benennen .... – David
Wie andere gesagt haben, ist es die "Select All" Button. Wenn Sie darauf klicken, wird alles im DataGrid ausgewählt, wenn SelectionMode auf Extended gesetzt ist.
Die Schaltfläche "Alle auswählen" ist Teil der DataGrid-Vorlage. Oder tatsächlich, es ist Teil der ScrollViewer-Vorlage, die Teil der DataGrid-Vorlage ist, so dass es ziemlich tief verschachtelt ist. Das ControlTemplate sieht so aus. Von hier aus können Sie tun, was Sie mit dem SelectAll Knopf möchten, deaktivieren Sie es, ändern Sie den Hintergrund usw.
<Style TargetType="{x:Type DataGrid}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGrid}">
<Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="True">
<ScrollViewer x:Name="DG_ScrollViewer" Focusable="false">
<ScrollViewer.Template>
<ControlTemplate TargetType="{x:Type ScrollViewer}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<!-- Here it is -->
<Button Command="{x:Static DataGrid.SelectAllCommand}" Focusable="false" Style="{DynamicResource {ComponentResourceKey ResourceId=DataGridSelectAllButtonStyle, TypeInTargetAssembly={x:Type DataGrid}}}" Visibility="{Binding HeadersVisibility, ConverterParameter={x:Static DataGridHeadersVisibility.All}, Converter={x:Static DataGrid.HeadersVisibilityConverter}, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" Width="{Binding CellsPanelHorizontalOffset, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"/>
<DataGridColumnHeadersPresenter x:Name="PART_ColumnHeadersPresenter" Grid.Column="1" Visibility="{Binding HeadersVisibility, ConverterParameter={x:Static DataGridHeadersVisibility.Column}, Converter={x:Static DataGrid.HeadersVisibilityConverter}, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"/>
<ScrollContentPresenter x:Name="PART_ScrollContentPresenter" CanContentScroll="{TemplateBinding CanContentScroll}" Grid.ColumnSpan="2" Grid.Row="1"/>
<ScrollBar x:Name="PART_VerticalScrollBar" Grid.Column="2" Maximum="{TemplateBinding ScrollableHeight}" Orientation="Vertical" Grid.Row="1" Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}" Value="{Binding VerticalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}" ViewportSize="{TemplateBinding ViewportHeight}"/>
<Grid Grid.Column="1" Grid.Row="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="{Binding NonFrozenColumnsViewportHorizontalOffset, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<ScrollBar x:Name="PART_HorizontalScrollBar" Grid.Column="1" Maximum="{TemplateBinding ScrollableWidth}" Orientation="Horizontal" Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}" Value="{Binding HorizontalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}" ViewportSize="{TemplateBinding ViewportWidth}"/>
</Grid>
</Grid>
</ControlTemplate>
</ScrollViewer.Template>
<ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</ScrollViewer>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Wenn Sie die selectAll Taste deaktivieren möchten, können Sie auch tun, wie folgt:
//Disable select all button
datagrid.CommandBindings.Add(new CommandBinding(DataGrid.SelectAllCommand, delegate { }, (s, a) => { if (a.OriginalSource is Button) ((Button)a.OriginalSource).IsEnabled = false; }));
als Workaround. Dies kann auch verwendet werden, um andere Dinge zu verkabeln.
Das „Problem“ mit Re-Templat ist, dass Sie alle Themen Rechnung zu tragen haben ... langweilig :)
+1! Das ist ein sehr cooler "Trick"! Werde mich daran erinnern –
Ist es 'ColumnHeader'? – GolezTrol
Ist es ein weißes Rechteck? – NVM