是否可以将UserControl的资源(或其资源之一)作为UserControl的DataContext提供?
我尝试将DataGrid的CellTemplate中的Button的Command属性绑定到我的ViewModel中的属性。
如果使用ListBox而不是DataGrid,这适用于我,如下面的
<ListBox.ItemTemplate>
<DataTemplate>
<HyperlinkButton Content="{Binding DESCRIPTION}"
Command="{Binding DataContext.SelectSingleBackCommand, ElementName=LayoutRoot}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
但是,如果我使用DataGrid而不是ListBox,即使我单击按钮也没有效果!
<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中可能有另一个LayoutRoot(数据网格是一个简单的sl4网格。) 并将LayoutRoot的名称更改为LayoutRootMain。没办法。
注意:然后我删除了&lt; UserControl.DataContext&gt;部分,
所以我决定将我的ViewModel传递给&lt; UserConrol.Resources&gt;部分如下所示
<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}"
谢谢!