WPF - ListBox背景颜色 - 代码背后

时间:2009-05-09 23:24:24

标签: c# wpf listbox styles

我正在尝试在代码中设置列表框的背景颜色。我可以使用它来处理列表框项目,但不能使用列表框本身。

以下是适用的代码(使用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 个答案:

答案 0 :(得分:2)

我解决了自己的问题。这是由于我自己的错误。

我在ListBox属性中有以下内容:

Background =“{x:Null}”

我不知道那是怎么到达那里的。可能以某种方式默认设置。

嗯,它已经解决了。上面的代码有效。您可以通过代码将列表框的背景设置为渐变,只要您没有设置Background = null:)

由于