0

是否可以将 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}"

谢谢!

4

0 回答 0