C# 以编程方式更改列表框项目背景色

C# 以编程方式更改列表框项目背景色,c#,wpf,C#,Wpf,我很难理解XAML与C#的关系。 我的问题是,我有两个不同的List对象,其中一个List的背景色为“蓝色”,另一个的背景色为“红色”。之后,我想在我的列表框中显示它 我的XAML列表框代码: <ListBox x:Name="ListBox1" HorizontalAlignment="Left" Height="240" Margin="81,80,0,0" VerticalAlignment="Top" Width="321" BorderBrush="#FF6C6C6C" Sele

我很难理解XAML与C#的关系。 我的问题是,我有两个不同的
List
对象,其中一个
List
的背景色为“蓝色”,另一个的背景色为“红色”。之后,我想在我的
列表框中显示它

我的XAML列表框代码:

<ListBox x:Name="ListBox1" HorizontalAlignment="Left" Height="240" Margin="81,80,0,0" VerticalAlignment="Top" Width="321" BorderBrush="#FF6C6C6C" SelectionMode="Single" SelectionChanged="ListBoxSelectionChanged">

</ListBox>

需要50%的声誉才能作为答案添加评论

为什么不能用xaml来做呢

<ListBox x:Name="ListBox1" Background="Red">

</ListBox>

只需添加背景属性,这将为列表框着色

但是如果你想在wpf方面做得更好,我建议你学习数据绑定,这样你就不需要手动将对象添加到列表框中

然后再看一下MVVM

给你:

foreach (var object1 in objects1)
{
    Thread.Sleep(1);
    listBox1.Items.Add(new ListBoxItem { Content = object1.label, Background = Brushes.Blue });
 }
 foreach (var object2 in objects2)
 {
     Thread.Sleep(1);
     ListBox2.Items.Add(new ListBoxItem { Content = objects2.label, Background = Brushes.Red });
     //I want these Objects to be red
 }

更好的方法是使用数据绑定、样式等。

请参阅。在WPF中,您必须使用绑定,这样做
Items.Add()
-这种方式已经过时了。而那
线程。睡眠(1)
真臭。您可以使用
async/await
await Task.Delay()
来避免UI暂停。我不能这样做,因为我在同一个列表框中有两个不同的列表,但我希望每个列表都有不同的颜色。啊,我看到了,您能改变它显示的行:ListBox2.Items.Add(objects2.label);这让我相信你有两个列表框
foreach (var object1 in objects1)
{
    Thread.Sleep(1);
    listBox1.Items.Add(new ListBoxItem { Content = object1.label, Background = Brushes.Blue });
 }
 foreach (var object2 in objects2)
 {
     Thread.Sleep(1);
     ListBox2.Items.Add(new ListBoxItem { Content = objects2.label, Background = Brushes.Red });
     //I want these Objects to be red
 }