[英]WP7 : access and change controls inside a ListBox DataTemplate based on the data from the database
我知道這已經被問過了,但是我有點困惑! 到目前為止,我正在用MVVM編寫我的應用程序。 但是現在我需要知道在列表框中的數據模板中訪問控件的最佳方法是什么。 我想通過后面的代碼訪問它們,並且還能夠基於數據庫中的其他值來更改它們!
這是視圖:
<ListBox Margin="0,8,0,0" toolkit:TiltEffect.IsTiltEnabled="True" x:Name="counterlist" ItemsSource="{Binding Groups}" HorizontalAlignment="Center" Tap="list_OnTap"
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Background="Orange" Width="125" Height="125" Margin="6">
<TextBlock Name="name" Foreground="White" Text="{Binding Name}" VerticalAlignment="Center" HorizontalAlignment="Center" TextAlignment="Center" TextWrapping="Wrap"/>
<TextBlock Name="items" Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Center" TextAlignment="Center" TextWrapping="Wrap"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<toolkit:WrapPanel/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
此列表框綁定到我的viewModel中的Groups Observable集合。 到目前為止,一切都很好。 現在我有一個方法叫做
public int ItemsinGroup(int gid)
該方法返回每個組中的項目數,但它不僅基於該數據庫,而且還從外部來源獲取一些信息,因此我不能簡單地通過查詢將其也添加到可觀察的集合中。
我只需要將此添加到列表框中的每個項目,以便它顯示每個組的關聯項目計數。
我希望能夠在后面的代碼中對其進行更改。 我的意思是我想訪問代碼背后的每個數據循環以及XAML(我們已經通過綁定來實現)。 如果可以的話,很容易將ItemsinGroup結果注入到列表框循環中的相關項目中。 我可以通過將我的方法放在viewModel中來做到這一點嗎? 但是循環中的當前項目如何,我如何找出列表框循環中每個組的當前ID是什么?
我需要知道做這些事情的最佳方法是什么,在這種情況下每個人通常都會做什么!
非常感謝
您想要使用MVVM並從背后的代碼更新集合中的單個項目的願望似乎矛盾。
最簡單的解決方案可能是獲取組的集合,然后在將它們綁定到UI之前,先遍歷它們並將計數添加到集合中的對象。
或者,如果您想盡快綁定集合,然后更新它。 您可以在綁定后逐步瀏覽集合,只要集合中的對象實現INotifyPropertyChanged,您就可以更新它們,並在ItemTemplate中使用第二個TextBlock進行設置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.