UserControl的资源是UserControl的DataContext?

时间:2012-04-16 09:27:24

标签: silverlight data-binding binding mvvm datacontext

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

谢谢!

0 个答案:

没有答案