我正在开发一个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>
答案 0 :(得分:0)
如果您的VM上的“SelectedEntityDetail”道具与“SelectedEntityClass”处于同一级别
,您似乎走在正确的轨道上尝试在树“LayoutRoot”等中与“master”网格或上面的内容相同的级别进行绑定。因为我只猜测requestView是什么。
SelectedItem =“{Binding ElementName = master,Path = DataContext.SelectedEntityDetail}”
答案 1 :(得分:0)
一直与Telerik支持人员联系,他们告诉我这是一个框架限制。他们建议使用附加行为的变通方法。到目前为止,我一直坚持使用一小段代码隐藏