WPF - Цвет фона ListBox - CodeBehind - PullRequest
1 голос
/ 10 мая 2009

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

Вот код, который работает (с ListBoxItem):

        private void SetBackgroundGradient()
    {
        var styleListBox = new Style(typeof(ListBoxItem));

        var myBrush = new LinearGradientBrush();
        myBrush.GradientStops.Add(new GradientStop(Color.FromArgb(255, 0, 0, 0), 0.0));
        myBrush.GradientStops.Add(new GradientStop(Color.FromArgb(255, 255, 255, 255), 1.0));


        styleListBox.Setters.Add(new Setter
        {
            Property = BackgroundProperty,
            Value = myBrush
        });

        lstTopics.ItemContainerStyle = styleListBox;
    }

Теперь, если я изменю код, чтобы попытаться работать с самим ListBox, я получу только белый фон. Вот код для этого:

private void SetBackgroundGradient()
    {
        var styleListBox = new Style(typeof(ListBox));

        var myBrush = new LinearGradientBrush();
        myBrush.GradientStops.Add(new GradientStop(Color.FromArgb(255, 0, 0, 0), 0.0));
        myBrush.GradientStops.Add(new GradientStop(Color.FromArgb(255, 255, 255, 255), 1.0));


        styleListBox.Setters.Add(new Setter
        {
            Property = BackgroundProperty,
            Value = myBrush
        });

        lstTopics.Style = styleListBox;
    }

Есть идеи, что я могу делать не так?

Если вам нужны какие-либо разъяснения по поводу того, что я спрашиваю, пожалуйста, дайте мне знать.

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

1 Ответ

2 голосов
/ 10 мая 2009

Я решил свою проблему. Это было из-за моей собственной ошибки.

У меня было следующее в атрибутах ListBox:

Background = "{x: Null}"

Понятия не имею, как это туда попало. Возможно, как-то установлено по умолчанию.

Ну, это решено. Код выше работает. Вы можете установить фон списка в качестве градиента через код, если у вас не задан Background = null:)

Спасибо

...