Wpf 绿色圆圈中项目的名称是什么
绿色圆圈中的元素名称是什么?单击此元素对应的事件是什么 有趣的是,数据网格的这一部分是无人区——它甚至没有正式名称,更不用说行为或模板了。为了处理与该领域相关的事件,请参见或。有趣的是,数据网格的这一部分不是人类的领地——它甚至没有正式名称,更不用说行为或模板了。要处理与此区域相关的事件,请参阅或。在我找到的至少一个示例中,单击角落中的灰色三角形会选中所有行 但据我所知,这不是此控件的内置功能。它是自定义模板的一部分 请参见此示例:Wpf 绿色圆圈中项目的名称是什么,wpf,datagrid,wpf-controls,Wpf,Datagrid,Wpf Controls,绿色圆圈中的元素名称是什么?单击此元素对应的事件是什么 有趣的是,数据网格的这一部分是无人区——它甚至没有正式名称,更不用说行为或模板了。为了处理与该领域相关的事件,请参见或。有趣的是,数据网格的这一部分不是人类的领地——它甚至没有正式名称,更不用说行为或模板了。要处理与此区域相关的事件,请参阅或。在我找到的至少一个示例中,单击角落中的灰色三角形会选中所有行 但据我所知,这不是此控件的内置功能。它是自定义模板的一部分 请参见此示例: 如果下载示例,并在Resources/DataGridCus
如果下载示例,并在Resources/DataGridCustomization.xaml文件中搜索“SelectAll”,您将找到模板中包含此功能的部分。在我找到的至少一个示例中,单击角落中的灰色三角形会导致选中所有行 但据我所知,这不是此控件的内置功能。它是自定义模板的一部分 请参见此示例:
如果下载示例并在Resources/DataGridCustomization.xaml文件中搜索“SelectAll”,您将找到包含此功能的模板部分。我称之为“SelectAll”按钮。但是,它没有正式名称。它也没有公开任何样式属性。有关通过附加特性设置样式的简单方法,请参见以下内容:
科林E.我称之为“全选”按钮。但是,它没有正式名称。它也没有公开任何样式属性。有关通过附加特性设置样式的简单方法,请参见以下内容:
科林E.正如其他人所说,这是“全选”按钮。如果SelectionMode设置为Extended,单击它将选择DataGrid中的所有内容 “全选”按钮是DataGrid模板的一部分。或者实际上,它是ScrollViewer模板的一部分,也是DataGrid模板的一部分,所以它的嵌套非常深。ControlTemplate如下所示。在这里,您可以使用SelectAll按钮执行任何操作,禁用它,更改背景等
<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>
正如其他人所说,这是“全选”按钮。如果SelectionMode设置为Extended,单击它将选择DataGrid中的所有内容 “全选”按钮是DataGrid模板的一部分。或者实际上,它是ScrollViewer模板的一部分,也是DataGrid模板的一部分,所以它的嵌套非常深。ControlTemplate如下所示。在这里,您可以使用SelectAll按钮执行任何操作,禁用它,更改背景等
<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>
如果要禁用selectall按钮,也可以执行以下操作:
//Disable select all button
datagrid.CommandBindings.Add(new CommandBinding(DataGrid.SelectAllCommand, delegate { }, (s, a) => { if (a.OriginalSource is Button) ((Button)a.OriginalSource).IsEnabled = false; }));
作为解决办法。
这也可以用来连接其他东西
重新模板化的“问题”是你必须考虑所有的主题。。。单调:)如果要禁用selectall按钮,也可以执行以下操作:
//Disable select all button
datagrid.CommandBindings.Add(new CommandBinding(DataGrid.SelectAllCommand, delegate { }, (s, a) => { if (a.OriginalSource is Button) ((Button)a.OriginalSource).IsEnabled = false; }));
作为解决办法。
这也可以用来连接其他东西
重新模板化的“问题”是你必须考虑所有的主题。。。冗长:)是白色矩形吗?是白色矩形吗?+1用于链接,非常有用。我做了几乎完全相同的事情,在这篇文章中提出的样式这个该死的按钮,因为我没有发现任何有用的东西在当时。这真的很让人恼火