Это - плохое использование, если Вы идете Строгие.
<br/>
и <hr/>
не часть содержания. Например, эти <hr/>
является наиболее часто используемым для разделения блоков текста. Но не возможно к этому с нижней частью границы? И <br/>
рассматривается во многих случаях как способ ограничить текст определенной формой, которая не могла быть выполнена с css?
, Конечно, Вы не идете Строгие, не волнуются к очень.
Хорошо, после долгих поисков я узнал, как добраться до кнопки, от Колина Эберхарда, здесь:
Стилизация труднодоступных элементов в шаблонах управления с прикрепленными поведениями
Затем я расширил метод «Grid_Loaded» в его классе, добавив обработчик событий к кнопке, но не забудьте сначала удалить команду «Выбрать все» по умолчанию (в противном случае после запуска добавленного нами обработчика событий команда запускается) .
/// <summary>
/// Handles the DataGrid's Loaded event.
/// </summary>
/// <param name="sender">Sender object.</param>
/// <param name="e">Event args.</param>
private static void Grid_Loaded(object sender, RoutedEventArgs e)
{
DataGrid grid = sender as DataGrid;
DependencyObject dep = grid;
// Navigate down the visual tree to the button
while (!(dep is Button))
{
dep = VisualTreeHelper.GetChild(dep, 0);
}
Button button = dep as Button;
// apply our new template
ControlTemplate template = GetSelectAllButtonTemplate(grid);
button.Template = template;
button.Command = null;
button.Click += new RoutedEventHandler(SelectAllClicked);
}
/// <summary>
/// Handles the DataGrid's select all button's click event.
/// </summary>
/// <param name="sender">Sender object.</param>
/// <param name="e">Event args.</param>
private static void SelectAllClicked(object sender, RoutedEventArgs e)
{
Button button = sender as Button;
DependencyObject dep = button;
// Navigate up the visual tree to the grid
while (!(dep is DataGrid))
{
dep = VisualTreeHelper.GetParent(dep);
}
DataGrid grid = dep as DataGrid;
if (grid.SelectedItems.Count < grid.Items.Count)
{
grid.SelectAll();
}
else
{
grid.UnselectAll();
}
e.Handled = true;
}
По сути, если какие-либо строки не выделены, он «выбирает все», в противном случае - «отменяет выбор всех». Это работает почти так же, как вы ожидаете, что все сработает select / unselect all, я не могу поверить, что они не заставляли команду делать это по умолчанию, если честно, может быть, в следующем выпуске.
Надеюсь, это все равно кому-то поможет. , Привет, Уилл