2016-07-28 136 views
1

我很难理解XAML如何与C#连接。 我的问题是,我有两个不同的List<String>对象充满内容,我想要一个List<String>背景颜色'蓝色',另一个背景颜色'红色'。后来,我想在我的ListBox以编程方式更改列表框项目背景颜色

我的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> 

我的C#代码加载所有的内容到ListBox中

public partial class MainWindow : Window 
{ 
public void AddItemsToListBox() 
{ 
    foreach (var object1 in objects1) 
    { 
     Thread.Sleep(1); 
     listBox1.Items.Add(object1.label); 
     //I want these Objects to be blue 
    } 
    foreach (var object2 in objects2) 
    { 
     Thread.Sleep(1); 
     ListBox2.Items.Add(object2.label); 
     //I want these Objects to be red 
    } 
} 
} 
+2

请参阅[此答案](http://stackoverflow.com/a/18982258/1997232)。在WPF中,你必须使用绑定,这样做'Items.Add()' - 已经过时了。而'Thread.Sleep(1)'很臭。你可以使用'async/await'和'await Task.Delay()'来避免拖延UI。 – Sinatr

回答

2

在这里你去:

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 
} 

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

+0

谢谢,作品像一个魅力:v –

0

需要50声誉评论这样添加作为回答

为什么不能在xaml中做到这一点?

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

</ListBox> 

刚才添加的背景属性,这会影响你对列表框

,但如果你想成为在WPF更好,我建议学习数据绑定,所以你不需要手动对象添加到列表框中

并在那之后看看MVVM

+0

我不能这样做,因为我在同一个列表框中有两个不同的列表,但我希望每个列表都有不同的颜色 –

+1

ahh我看到了,你可以改变它所在的行: ListBox2.Items.Add(objects2 。标签); 它让我相信你有2个列表框 – Sam

相关问题