WPF DataGrid верхняя левая кнопка установить / просмотреть содержимое? - PullRequest
0 голосов
/ 08 марта 2019

Попытка установить свойство Content верхней левой кнопки WPF DataGrid во время выполнения.Я получаю объект кнопки, используя VisualTreeHelper объекта DataGrid, и затем я успешно устанавливаю его свойство Content, как проверено с помощью Snoop при запуске приложения.Однако текст кнопки не виден.Я подозреваю, что это потому, что в верхней части кнопки есть элементы пользовательского интерфейса, которые используют непрозрачные фоновые кисти.После прочтения документов я вижу сетку с раскадровками и прямоугольник с градиентными кистями.

За исключением редактирования шаблона стиля верхней левой кнопки WPF DataGrid, какие есть варианты сделать кнопку Содержимое (текст) видимым?

Ответы [ 2 ]

0 голосов
/ 09 марта 2019

(Что-то смешное происходит, я сейчас пишу под тем же именем пользователя, что и раньше, но ТАК настаивает на том, что я должен воссоздавать свой профиль каждый раз, когда я вхожу в систему. Перейдите к рисунку.)

Спасибо Энди за решениеты предложил.По технической причине, указанной выше, я не могу пометить этот вопрос как "Решено".

Теперь я думаю, что быстрый способ обойти это - разместить прозрачную метку прямо над кнопкой DataGrid с IsHitTestVisible = false.Однако я заметил пару интересных вещей:

  • Кажется, кнопка может иметь сетку или строку для содержимого, но не оба одновременно;
  • Кнопка уже создана, когда событие DataGrid Loadedзапускается обработчик, например, к нему может быть добавлен обработчик события Click;однако установка Content в строку в это время ничего не меняет.Я предполагаю, что содержимое изменяется при заполнении DataGrid.
0 голосов
/ 08 марта 2019

Вы можете полностью заменить шаблон.

Я бы предпочел привязать текст текстового блока к свойству в модели представления лично.

Это может помочь вам начать.

Поместите это в область таблицы данных, как в ресурсах вашего окна или в словаре ресурсов, объединенном в app.xaml.

    <Style x:Key="{ComponentResourceKey ResourceId=DataGridSelectAllButtonStyle, TypeInTargetAssembly={x:Type DataGrid}}" TargetType="{x:Type Button}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Button}">
                    <Border Background="Red">
                        <TextBlock Text="X" Foreground="White"/>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

Требуется больше работы, но он обнаруживается на образце сетки данных, который у меня есть.

(Это то, что имеет десятки стилей из экспериментов, отвечающих на вопросы в других местах).

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...