我正在开发一个Silverlight4应用程序,并且使用的是2010年的Q1 release 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> 发布于 2010-05-24 10:17:46
已经与Telerik支持联系过了,他们告诉我这是一个框架限制。他们建议了一种使用附加行为的解决方法。到目前为止,我一直坚持使用一小段代码
发布于 2010-05-10 19:40:18
如果您的VM上的"SelectedEntityDetail“属性与"SelectedEntityClass”属性处于同一级别,那么看起来您的方向是正确的。
尝试在与你的“主”网格相同的级别进行绑定,或者在树"LayoutRoot“等的上面进行绑定。因为我只是猜测requestView是什么。
绑定“{SelectedItem= ElementName=master,Path=DataContext.SelectedEntityDetail}”
https://stackoverflow.com/questions/2800740
复制相似问题