我想從Datogrids的ColumnTemplate中的UserControl訪問對象。WPF DataGrid,在ColumnTemplate的綁定中訪問DataGrid外的元素
這不起作用。現在我讀了它是因爲Datacontext。
我發現這個例子,應該至極解決這個問題:http://blog.errorok.com/2010/09/09/212/
但事件:ColumnDataContextChanged永遠不會在我的項目叫!
這裏是我的XAML的一部分:
<DataGridTemplateColumn Header="Database-Fieldtype" Width="Auto" IsReadOnly="False" SortMemberPath="DatabaseFieldType">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding DatabaseFieldType}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ConfigurationTool:EditProtocolDatasets}}, Path=grdDatasets.SelectedItem.Storage.DatabaseFieldTypes}"
SelectedItem="{Binding DatabaseFieldType}"
VerticalAlignment="Top" Width="179" Padding="0" Margin="0">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
組態:EditProtocolDatasets是我的用戶,grdDatasets是另一種的Datagrid,到至極的SelectedItem我想綁定!
你說得對,用你的兩個假設! 但是爲什麼DataContexes的代碼不起作用? 我也嘗試過用RelativeSoure,但我的問題是,我不想搜索控件的類型,我想通過名稱查找控件! 我現在tryed這麼: 的ItemsSource = 「{綁定的RelativeSource = {的RelativeSource FindAncestor,AncestorType = {X:類型組態:EditProtocolDatasets}},路徑= grdDatasets.SelectedItem.Storage.DatabaseFieldTypes}」 但這並不工作,因爲grdDatasets是沒有財產(這是一個控制!) – 2011-04-03 15:47:52
你可以編輯你的原始文章包含XAML? – 2011-04-03 15:59:47
我會嘗試你的新解決方案,但我認爲它會工作! 但是,您是否有任何想法,爲什麼解決方案在http://blog.errorok.com/2010/09/09/212/不起作用? – 2011-04-03 17:40:23