2016-11-21 56 views
2

我正在使用WPF進行GUI設計,我的GUI包含一個列表框。簡而言之,我試圖將所有列表框的項目設置爲相同的前景色#FF548E19。據我所知,各個項目的前景色進入列表框可以通過XAML屬性進行定義:有沒有辦法改寫列表框中所有項目的顏色?

Foreground="#FF548E19" 

因爲我實際使用數據綁定與我構建的視圖模型,我不能簡單地爲每個項目設置Foreground屬性,因爲它們是在運行時填充的。作爲替代,我試圖在列表框本身上設置Foreground屬性。這沒有做什麼,所有的項目仍然顯示顏色白色

問題

有沒有一種方法,以確保每個項目的結合(項填充到列表框)獲取前景色#FF548E19沒有在運行時手動更改顏色?

更新

一位評論已要求我如何真正填充我的列表框的項目。所以這裏是數據綁定屬性,它被推入屬性更改的列表框中。

/// <summary> 
/// A list of the failure codes (per entry). 
/// </summary> 
public List<string> FailCodes 
{ 
    get 
    { 
     return this.failCodes; 
    } 

    set 
    { 
     this.failCodes = value; 
     this.OnPropertyChanged("FailCodes"); 
    } 
} 

此外,這裏是XAML屬性(包括如何獲得綁定ItemsSource)。

<ListBox x:Name="listBox_failCodes" 
     Grid.Row="0" 
     Margin="0" Background="{x:Null}" 
     HorizontalContentAlignment="Center" 
     BorderBrush="{x:Null}" 
     Foreground="#FF548E19" 
     ItemsSource="{Binding FailCodes}"/> 
+0

你能提供的代碼,每一個項目你的列表框和項目是如何添加的?您可以使用'itemtemplate'屬性設置項目的樣式:https://msdn.microsoft.com/pl-pl/library/system.windows.controls.itemscontrol.itemtemplate(v=vs.110).aspx或 – lukbl

+0

@lukbl是,謝謝你的提問。當然,我可以做到這一點。 – Snoopy

回答

3

在您的標記,使用item template(如suggested in the comments)與靜態Foreground值:

<ListBox x:Name="listBox_failCodes" 
    Grid.Row="0" 
    Margin="0" Background="{x:Null}" 
    HorizontalContentAlignment="Center" 
    BorderBrush="{x:Null}" 
    ItemsSource="{Binding FailCodes}"/> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Foreground="#FF548E19" Text="{Binding}"></TextBlock> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

這將適用於綁定到列表框中

+0

讓我試試這個,我會立即讓你知道它是如何工作的。 – Snoopy

+0

@StevieV更新了答案,以反映您的問題代碼 –

+0

令人驚訝的工作,感謝您的答案,並感謝您更新它以匹配我的問題中的代碼。很有幫助。 – Snoopy

相關問題