WP7(Silverlight 3)でアプリを作成しています。私はこのようなビューモデルを持っています
public class MainViewModel
{
public List<ActivityTypes> ActivityTypes{get;set;}
public RelayCommand LoadActivity{get;set;}
}
ページのデータコンテキストがビューモデルに設定されており、アイテムソースがActivityTypesコレクションに設定されたリストボックスがあります。リストボックスで、コマンドがビューモデルのLoadActivityプロパティにバインドされているボタンのリストをレンダリングしようとしています。RelayCommandは、それが何であるか疑問に思っている場合に備えて、MVVMLightツールキットの一部です。
私が抱えている問題は、リストボックスのitemsourceがActivitytypesコレクションに設定されており、このプロパティが親にあるため、ボタンコマンドをLoadActivityプロパティにバインドする方法が見つからないことです。FindAncesterについて読みましたが、Silverlight3でサポートされているようには見えません。
私の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>
このようなものをコーディングするための最良の方法は何ですか?