我有一個列表框,其中包含一個按字母順序排列的單詞列表。對於每封信,我希望第一個單詞是藍色,其他所有單詞都是白色的。我之前通過循環遍歷單詞,使用適當的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. 如何根據其他元素樣式更改HTML元素的樣式?
- 2. XSD根據以前的元素值更改可用元素
- 3. 根據另一個元素的樣式更改元素樣式,不使用javascript
- 4. Silverlight的數據和元素綁定
- 5. Silverlight元素綁定
- 6. 如何根據子元素中的數據選擇元素?
- 7. 根據以前的元素讀取XML元素
- 8. Silverlight中的元素綁定
- 9. 使用jQuery根據動態值更改元素的顏色
- 10. 根據內容動態更改div元素的高度
- 11. Silverlight元素綁定到generic.xaml元素
- 12. 根據CheckBox狀態通過數據綁定更改樣式
- 13. 推動元素正在改變json數據中的以前的元素
- 14. 動態地改變樣式html元素
- 15. 如何獲取控件父DataContext元素元素數據綁定?
- 16. 如何根據java中的另一個元素更改XML元素的值?
- 17. 使用xmlstarlet和BASH,如何根據元素當前值更新元素的值
- 18. 如何從數據庫迭代中動態更改html元素
- 19. Silverlight 3元素綁定在數據模式中
- 20. 如何動態更改元素?
- 21. JavaFx元素,根據窗口大小動態更改大小
- 22. 如何根據recyclerview Android的位置動態地更改佈局中的元素?
- 23. 根據下一個更新當前元素的數據
- 24. 如何動態綁定父元素
- 25. 動態地更改元素
- 26. 動態更改html元素
- 27. 改變當前元素的樣式,Angular
- 28. 根據元素名稱更改元素內容XSLT
- 29. 如何動態更改元素屬性?
- 30. 如何更改鼠標懸停在當前元素上的以前的元素?