【发布时间】:2011-02-17 13:09:42
【问题描述】:
我正在开发 Silverlight 4 应用程序并使用 2010 Q1 版本 1 RadGridView。我正在使用 MVVM 模式开发这个应用程序,并试图将我的代码隐藏降至最低。
在我的视图上,我有一个 RadGridView,它绑定到我的 ViewModel 上的一个属性。我正在通过SelectedItem 设置属性。我有一个嵌套的 RadGridView,我想将我的 ViewModel 上的属性设置为SelectedItem,但我不能。我认为我的嵌套网格的 DataContext 是父绑定集合中的元素,而不是我的 ViewModel。我可以轻松地使用代码隐藏从嵌套网格上的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>
【问题讨论】:
标签: silverlight gridview datacontext selecteditem