UserControl のリソース (またはそのリソースの 1 つ) を UserControl の DataContext として与えることは可能ですか?
DataGrid の CellTemplate の Button の Command プロパティを ViewModel のプロパティにバインドしようとしました。
DataGrid の代わりに ListBox を使用した場合、これは以下のように機能します。
<ListBox.ItemTemplate>
<DataTemplate>
<HyperlinkButton Content="{Binding DESCRIPTION}"
Command="{Binding DataContext.SelectSingleBackCommand, ElementName=LayoutRoot}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
しかし、ListBox の代わりに DataGrid を使用すると、ボタンをクリックしても効果がありません!
<data:DataGrid x:Name="RadGridSearchResults" ItemsSource="{Binding SearchResults}" AutoGenerateColumns="False" IsReadOnly="True">
<data:DataGrid.Columns>
<data:DataGridTemplateColumn Header="Just Header" CanUserSort="True" SortMemberPath="DESCRIPTION">
<data:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Margin="5" Content="{Binding DESCRIPTION}" Command="{Binding DataContext.SelectSingleBackCommand,ElementName=LayoutRoot}"/>
</DataTemplate>
</data:DataGridTemplateColumn.CellTemplate>
</data:DataGridTemplateColumn>
</data:DataGrid.Columns>
</data:DataGrid>
次に、DataGrid (Data Grid は単純な sl4 グリッドです) に別の LayoutRoot があるのではないかと考え、LayoutRoot の名前を LayoutRootMain に変更しました。とんでもない。
注:次に、 < UserControl.DataContext > の部分を削除しました。
そこで、以下に示すように、ViewModel を < UserConrol.Resources > Part に渡すことにしました。
<UserConrol.Resources>
<modelview:SelectReceiversViewModel x:Key="MainDataContextResource" x:Name="MainDataContextResource"/>
</UserControl.Resources>
しかし、どうすれば UserControl の DataContext プロパティをこのリソースにバインドできますか?
<UserControl... DataContext="{Binding RelativeSource={RelativeSource Self},Path=Resources}"
または
<UserControl... DataContext="{Binding ElementName=MainDataContextResource}"
ありがとう!