我有一個列表框,其中包含一個按字母順序排列的單詞列表。對於每封信,我希望第一個單詞是藍色,其他所有單詞都是白色的。我之前通過循環遍歷單詞,使用適當的Foreground顏色創建TextBlock控件,並將它們手動添加到ListBox控件來完成此操作。不過,我想用數據綁定來做這件事。有沒有一種優雅的方式來應用這種條件格式與數據綁定?Silverlight數據綁定 - 如何根據以前的元素動態更改元素的樣式?
1
A
回答
1
這就是你通常使用ViewModel的一類東西。你可以做的是建立一個WordViewModel類,看起來是這樣的(但推測可能與INotifyPropertyChanged的實現等):
public class WordViewModel
{
public string Word {get; set;}
public Color ForegroundColor {get; set;}
}
當您添加WordViewModel
情況下,你ObservableCollection<WordViewModel>
,那麼您需要設置相應的屬性基於你以前使用的大致相同的邏輯。然後
你的列表框會是這個樣子:
<ListBox ItemsSource="{Binding MyWords}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Word}" ForegroundColor="{Binding ForegroundColor}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
有一個「ForegroundColor」的模式當然會是一個完整違反了「關注點分離」的。如果有一個乾淨而簡單的方法可以做到這一點,那麼在View中最合適。但是考慮到這種情況,除非有人能想到在XAML中處理它的更好方法,我認爲將它放在ViewModel中是合理的。
相關問題
- 1. 如何根據WP8 XAML中的綁定數據更改元素的樣式?
- 2. 根據元素更改隱式樣式?
- 3. 如何根據其他元素樣式更改HTML元素的樣式?
- 4. XSD根據以前的元素值更改可用元素
- 5. 根據可滾動內容的樣式更改元素樣式
- 6. 如何根據元素的ID更改固定標題樣式
- 7. 根據另一個元素的樣式更改元素樣式,不使用javascript
- 8. Silverlight的數據和元素綁定
- 9. 根據當前擁有的類別更改數據元素的樣式?
- 10. 使用JavaScript,如何根據另一個元素的CSS樣式更改一個元素的CSS樣式?
- 11. 如何根據子組件的狀態更改父組件樣式元素?
- 12. 如何根據身高動態更改元素邊距頂部
- 13. 根據以前的值更改HTML元素的顏色 - CSS
- 14. Silverlight元素綁定
- 15. 更改元素的數據
- 16. Silverlight中的元素綁定
- 17. 如何根據子元素中的數據選擇元素?
- 18. 根據以前的元素讀取XML元素
- 19. Silverlight元素綁定到generic.xaml元素
- 20. 根據內容動態更改div元素的高度
- 21. 使用jQuery根據動態值更改元素的顏色
- 22. 根據CheckBox狀態通過數據綁定更改樣式
- 23. 推動元素正在改變json數據中的以前的元素
- 24. 用C#動態改變元素樣式
- 25. 數據如何與DOM元素綁定?
- 26. 動態地改變樣式html元素
- 27. 如何動態添加元素與數據綁定
- 28. 根據值綁定c#xaml元素
- 29. 如何獲取控件父DataContext元素元素數據綁定?
- 30. 如何根據數據動態添加UI元素