是否可以将 UserControl 的资源(或其资源之一)作为 UserControl 的 DataContext?
我试图将 DataGrid 的 CellTemplate 中的按钮命令属性绑定到我的 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(Data Grid是一个简单的sl4网格。)并将LayoutRoot的名称更改为LayoutRootMain。没门。
注意:然后我删除了 <UserControl.DataContext> 部分,
所以我决定将我的 ViewModel 传递到 <UserConrol.Resources> 部分,如下所示
<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}"
谢谢!