Silverlight嵌套RadGridView SelectedItem DataContext

时间:2010-05-10 06:29:52

标签: silverlight gridview datacontext selecteditem

我正在开发一个Silverlight 4应用程序并使用2010 Q1版本1 RadGridView。我正在使用MVVM模式开发此应用程序,并尝试将我的代码保持在最低限度。

在我的视图上我有一个RadGridView,它绑定到我的ViewModel上的属性。我通过SelectedItem设置了一个属性。我有一个嵌套的RadGridView,我想在我的ViewModel上设置一个属性SelectedItem,但我不能。我认为我的嵌套网格的DataContext是父绑定集合中的元素,而不是我的ViewModel。我可以轻松地使用codebehind从嵌套网格上的SelectionChanged事件设置我的ViewModel属性,但我宁愿不这样做。我试图在我的嵌套网格中的ElementName中使用我的viewModelName来指定SelectedItem,ViewModel是DataContext,但我不能让它工作。有什么想法吗?

这是我的Xaml:

<grid:RadGridView  
                    x:Name="master" 
                    ItemsSource="{Binding EntityClassList, Mode=TwoWay}" 
                    SelectedItem="{Binding SelectedEntityClass, Mode=TwoWay}" 
                    AutoGenerateColumns="False" 
                    > 

                <grid:RadGridView.Columns> 
                    <grid:GridViewSelectColumn></grid:GridViewSelectColumn> 
                    <grid:GridViewDataColumn DataMemberBinding="{Binding Description}" Header="Description"/. 
                </grid:RadGridView.Columns> 

                <grid:RadGridView.RowDetailsTemplate> 
                    <DataTemplate> 
                        <grid:RadGridView 
                            x:Name="child" 
                            ItemsSource="{Binding EntityDetails, Mode=TwoWay}" 
                          /* Note: SelectedItem here is not setting my property in my ViewModel*/
                            SelectedItem="{Binding DataContext.SelectedEntityDetail, ElementName='RequestView', Mode=TwoWay}" 
                            AutoGenerateColumns="False" 
                            > 
                                <grid:RadGridView.Columns> 
                                    <grid:GridViewSelectColumn></grid:GridViewSelectColumn> 
                                    <grid:GridViewDataColumn DataMemberBinding="{Binding ServiceItem}" Header="Service Item" /> 
                                    <grid:GridViewDataColumn DataMemberBinding="{Binding Comment}" Header="Comments" /> 
                                </grid:RadGridView.Columns> 
                        </grid:RadGridView> 
                    </DataTemplate> 
                </grid:RadGridView.RowDetailsTemplate> 

            </grid:RadGridView> 

2 个答案:

答案 0 :(得分:0)

如果您的VM上的“SelectedEntityDetail”道具与“SelectedEntityClass”处于同一级别

,您似乎走在正确的轨道上

尝试在树“LayoutRoot”等中与“master”网格或上面的内容相同的级别进行绑定。因为我只猜测requestView是什么。

SelectedItem =“{Binding ElementName = master,Path = DataContext.SelectedEntityDetail}”

答案 1 :(得分:0)

一直与Telerik支持人员联系,他们告诉我这是一个框架限制。他们建议使用附加行为的变通方法。到目前为止,我一直坚持使用一小段代码隐藏