2010-05-26 67 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