0

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

ありがとう!

4

0 に答える 0