2010-05-26 64 views
0

我有2个数据模板。 一个包含一个网格,第二个包含一个按钮。 我需要发送按钮的命令参数作为选定的网格项目。如何访问wpf中另一个数据模板的数据?

我该怎么做?

<ObjectDataProvider x:Key="Datas" ObjectType="{x:Type ViewModel:UserControlViewModel}"></ObjectDataProvider> 

<DataTemplate x:Key="SourceGrid"> 
<WPFToolKit:DataGrid x:Name="SourceDataGrid" ItemsSource="{Binding Source={StaticResource Datas},Path=SourceGridData}" CanUserSortColumns="True" GridLinesVisibility="None" IsSynchronizedWithCurrentItem="True" SelectionUnit="FullRow"></WPFToolKit:DataGrid> 
</DataTemplate> 

<DataTemplate x:Key="AddRemoveDataTemplate"> 
<StackPanel> 
<Button Name="Add" Content="Add"> 
<Button.Command> 
<Binding Source="{StaticResource Datas}" Path="AddCommand"> 
</Binding> 
</Button.Command> 
<Binding ElementName="SourceDataGrid" Path="SelectedItem"></Binding> 
</Button.CommandParameter> 
</Button> 
<StackPanel> 
</DataTemplate> 

回答

1

你可以尝试使用BindingRelativeSource属性设置为FindAncestor模式,并寻找一个DataGrid对象。但是,我不确定它是否会在您的方案中发挥作用,因为我不知道这些DataTemplate是如何相互关联的。第二个DataTemplate用于DataGrid中的项目吗?!

不知何故,你的设计让我觉得很奇怪。两种情况下你确定需要DataTemplate吗?你想要达到什么目的?

+0

我有3周的DataTemplates 1-源格。 2-添加/删除按钮 3 - 目标网格 我有一个问题 - DataGrids的选定项目是一个依赖项属性。我可以将它赋值给视图模型声明的属性吗? – Relativity 2010-05-26 09:53:27

+0

这很好。但是“源网格”,“添加/删除按钮”和“目标网格”是什么意思*以及它们做什么*?你知道,你需要提供更多的细节,否则我们将无法帮助你。关于'SelectedItems':它不是*依赖属性。只有'SelectedItem'(单数!)是可以用于数据绑定的依赖项属性。但是,可以使用事件到命令模式或附加属性来启用与“SelectedItems”属性的数据绑定。 [Laurent Bugnion最近在博客中介绍了前一种方法。](http://tinyurl.com/38kpof9) – gehho 2010-05-26 13:10:42