Таблица данных стиля - Левый верхний угол - PullRequest
5 голосов
/ 30 ноября 2011

Я оформляю таблицу данных, но не могу понять, как стилизовать верхний левый файл таблицы данных. Это серое поле на этой картинке:

enter image description here

Ты знаешь, как это сделать?

Вот мой стиль:

<Style TargetType="{x:Type DataGrid}">
    <Setter Property="Margin" Value="5" />
    <Setter Property="Background">
        <Setter.Value>
            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                <GradientStop Color="White"/>
                <GradientStop Color="AliceBlue" Offset="1"/>
            </LinearGradientBrush>
        </Setter.Value>
    </Setter>
    <Setter Property="RowBackground">
        <Setter.Value>
            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                <GradientStop Color="#BAF0FF"/>
                <GradientStop Color="PowderBlue" Offset="1"/>
            </LinearGradientBrush>
        </Setter.Value>
    </Setter>
    <Setter Property="AlternatingRowBackground">
        <Setter.Value>
            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                <GradientStop Color="White"/>
                <GradientStop Color="AliceBlue" Offset="1"/>
            </LinearGradientBrush>
        </Setter.Value>
    </Setter>
    <Setter Property="HorizontalGridLinesBrush" Value="LightGray" />
    <Setter Property="VerticalGridLinesBrush" Value="LightGray" />
</Style>

Ответы [ 3 ]

7 голосов
/ 07 мая 2015

Из этого ответа Мне удалось создать этот код, который правильно устанавливает стиль кнопки:

<DataGrid>    
    <DataGrid.Resources>
        <Style TargetType="Button" x:Key="{ComponentResourceKey ResourceId=DataGridSelectAllButtonStyle, TypeInTargetAssembly={x:Type DataGrid}}">
            <Setter Property="Background" Value="Black" />
        </Style>
    </DataGrid.Resources>
</DataGrid>
2 голосов
/ 27 декабря 2013

Я получил несовершенное, но работающее решение.
Вы можете получить объект «Верхний левый угол» сетки данных с помощью VisualTreeHelper. Что на самом деле кнопка. Я думаю, вы знаете, как делать дальше.
Вот мой рабочий код:

//Change the top left button to a CheckBox
void StyleSelectAllButton(DependencyObject dependencyObject)
{
    for (int i = 0; i < VisualTreeHelper.GetChildrenCount(dependencyObject); i++)
    {
        var child = VisualTreeHelper.GetChild(dependencyObject, i);
        if ((child != null) && child is Button)
        {
            var grid = (Grid)VisualTreeHelper.GetChild(child, 0);

            var checkBox = new CheckBox()
            {
                VerticalAlignment = VerticalAlignment.Center,
                HorizontalAlignment = HorizontalAlignment.Center,
            };

            checkBox.Click += OnCheckBoxClicked;

            grid.Children.Clear();
            grid.Children.Add(checkBox);
        }
        else
        {
            StyleSelectAllButton(child);
        }
    }
}

//Action when the top left check box checked and unchecked
void OnCheckBoxClicked(object sender, RoutedEventArgs e)
{
    var checkBox = sender as CheckBox;

    if (checkBox == null)
    {
        return;
    }

    if (checkBox.IsChecked == true)
    {
        //Change the 'dataGrid' to your DataGrid instance name
       dataGrid.SelectAllCells(); 
    }
    else
    {
        //Change the 'dataGrid' to your DataGrid instance name
        dataGrid.UnselectAllCells();
    }
}
0 голосов
/ 26 июня 2019

Не удалось заставить работать решение Гмана, но я могу скрыть верхний левый угол, используя эту строку в коде (добавлен в событие Loaded):

(DataGridPricing.FindVisualChild<Button>()).Opacity = 0;

Это просто находит объект - тогдазаставляет проблему уйти (для меня), делая ее невидимой.Не повезло, однако, в изменении цвета.

...