Как изменить цвет границы поля со списком в WPF по коду (c#)? - PullRequest
0 голосов
/ 05 мая 2020

Кто-нибудь знает, как это сделать? Мне нужно отметить ComboBox, если он не был выбран.

Этот метод не работает:

cBoxBasics.BorderBrush = System.Windows.Media.Brushes.Red;

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 06 мая 2020

Если вы временно создадите новый ресурс для своего ComboBox и поиграете с ним, вы увидите, что он содержит элемент границы с именем templateRoot, цвет которого вам нужно установить. Это немного усложняется тем фактом, что вам нужно изменить дочерний элемент управления root для ToggleButton, а его родительский ComboBox также содержит свой собственный именованный элемент управления templateRoot. Итак, чтобы изменить цвет границы ToggleButton, вам нужно сначала найти его в ComboBox, затем найти элемент templateRoot Border и установить там цвет. Вам также необходимо убедиться, что вы сделали это после создания шаблона элемента управления, иначе там нечего будет менять, поэтому сделайте это в обработчике Loaded cBoxBasics:

public MainWindow()
{
    InitializeComponent();
    this.DataContext = this;

    this.cBoxBasics.Loaded += (s, e) =>
    {
        var toggleButton = this.cBoxBasics.Template.FindName("toggleButton", this.cBoxBasics) as ToggleButton;
        var border = toggleButton.Template.FindName("templateRoot", toggleButton) as Border;
        border.BorderBrush = Brushes.Red;
    };
}
0 голосов
/ 05 мая 2020

Быстрое и грязное решение - окружить поле со списком элементом границы и установить цвет элемента границы в xaml ...

<Border x:Name="MyBorder" BorderBrush="Red" BorderThickness="2">
    <ComboBox x:Name="cBoxBasics" />
</Border>

... или в коде позади

MyBorder.BorderBrush = System.Windows.Media.Brushes.Red;

Как уже упоминалось в комментариях, есть функции проверки, которые вы могли бы реализовать вместо этого. Хотя их может быть немного сложнее реализовать и изучить.

...