2016-07-28 251 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

相關問題