首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Silverlight嵌套RadGridView SelectedItem DataContext

Silverlight嵌套RadGridView SelectedItem DataContext
EN

Stack Overflow用户
提问于 2010-05-10 14:29:52
回答 2查看 3.3K关注 0票数 1

我正在开发一个Silverlight4应用程序,并且使用的是2010年的Q1 release 1 RadGridView。我正在使用MVVM模式开发这个应用程序,并试图将我的代码隐藏减少到最小。

在我的视图中,我有一个RadGridView,它绑定到我的ViewModel上的一个属性。我正在通过SelectedItem设置一个属性。我有一个嵌套的RadGridView,我想将我的ViewModel上的一个属性设置为SelectedItem,但我不能。我认为我的嵌套网格的DataContext是父级绑定集合中的元素,而不是我的ViewModel。我可以很容易地使用代码隐藏来从嵌套网格上的SelectionChanged事件设置我的ViewModel属性,但我不想这样做。我曾尝试在嵌套网格的ElementName中使用我的viewModelName,以指定对于SelectedItem,ViewModel就是DataContext,但我无法正常工作。有什么想法吗?

下面是我的Xaml:

代码语言:javascript
复制
<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> 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-05-24 10:17:46

已经与Telerik支持联系过了,他们告诉我这是一个框架限制。他们建议了一种使用附加行为的解决方法。到目前为止,我一直坚持使用一小段代码

票数 0
EN

Stack Overflow用户

发布于 2010-05-10 19:40:18

如果您的VM上的"SelectedEntityDetail“属性与"SelectedEntityClass”属性处于同一级别,那么看起来您的方向是正确的。

尝试在与你的“主”网格相同的级别进行绑定,或者在树"LayoutRoot“等的上面进行绑定。因为我只是猜测requestView是什么。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2800740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档