2013-03-04 46 views
0

我知道这已被问过,但我有点困惑! 我正在用MVVM编写我的应用程序到目前为止还不错。但现在我需要知道在列表框中的数据模板内访问我的控件的最佳方式。 我想通过后面的代码访问它们,并且能够根据数据库中的其他值来更改它们!WP7:根据数据库中的数据访问和更改ListBox DataTemplate中的控件

这里是视图:

   <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> 

此列表框绑定到组观察到的集合在我的视图模型。再次如此好。 现在我有一个名为方法

公众诠释ItemsinGroup(INT GID)

这个方法返回的项目数量各组中,但它不是简单的数据库,基于此,它也从外部源得到一些信息,以便我不能简单地做一个查询添加这也可观察收藏。

我只需要将其添加到列表框中的每个项目,以便它显示每个组的相关项目计数。

我希望能够在后面的代码中进行更改。我的意思是我想要访问代码后面的每个循环数据以及XAML(我们已经通过绑定来完成它)。 如果我可以这样做,将很容易将ItemsinGroup结果注入到列表框循环中的相关项。 我可以通过将我的方法放在viewModel中吗?但是循环中的当前项怎么样,我怎样才能找出listbox循环中每个组的当前ID?

我需要知道做这种事情的最佳方式是什么,通常每个人在这些情况下都做了什么!

非常感谢

回答

0

你希望使用MVVM,但更新的代码集合中各个项目的背后似乎是矛盾的。

这个最简单的解决方案可能是获取您的组的集合,并在将它们绑定到UI之前,通过它们循环并将计数添加到集合中的对象。

或者,如果您想要尽快绑定集合,然后更新它。您可以在绑定集合后逐步浏览集合,只要集合中的对象实现INotifyPropertyChanged,您可以更新它们,并在设置时在ItemTemplate中显示第二个TextBlock。

+0

你说得对,我做了网页开发,而且我总是在加载或更改数据时混淆了这些方法。我需要在MVVM上做更多的工作!无论如何感谢! – user65248 2013-03-04 14:40:35