我正在用 WP7 (Silverlight 3) 编写应用程序。我有一个看起来像这样的视图模型
public class MainViewModel
{
public List<ActivityTypes> ActivityTypes{get;set;}
public RelayCommand LoadActivity{get;set;}
}
我的页面数据上下文设置为视图模型,并且我有一个列表框,其项目源设置为 ActivityTypes 集合。在列表框中,我试图呈现一个按钮列表,这些按钮的命令绑定到视图模型上的 LoadActivity 属性。如果您想知道它是什么,RelayCommand 是 MVVM Light 工具包的一部分。
我遇到的问题是我找不到将按钮命令绑定到 LoadActivity 属性的方法,因为我的列表框的 itemsource 设置为 Activitytypes 集合,并且此属性位于父级中。我读过关于 FindAncester 的文章,但 Silverlight 3 似乎不支持它。
我的 XAML 看起来像这样
<UserControl.Resources>
<DataTemplate x:Key="ActivityTypeListTemplate">
<StackPanel>
<Button Command="{Binding LoadActivity}"> <!--binding not found as we're in the collection-->
<TextBlock Text="{Binding Name}" FontSize="50"/>
</Button>
</StackPanel>
</DataTemplate>
</UserControl.Resources>
<Grid x:Name="LayoutRoot" Background="{StaticResource PhoneChromeBrush}">
<ListBox Margin="0" ItemsSource="{Binding ActivityTypes}" ItemTemplate="{StaticResource ActivityTypeListTemplate}"/>
</Grid>
编写这样的代码的最佳方法是什么?