次のように xamdatagrid がグリッドに追加されたユーザー コントロールがあります。
<Grid Name="grid1">
<Grid.Resources>
<Style TargetType="{x:Type igEditors:XamComboEditor}">
<Setter Property="ItemsSource" Value="{Binding ElementName=grid1, Path=DataContext.Test}"/>
<Setter Property="DisplayMemberPath" Value="Key"/>
</Style>
</Grid.Resources>
<igDP:XamDataGrid DataSource="{Binding}" Name="xamDataGrid1" VerticalAlignment="Top" >
<igDP:XamDataGrid.FieldLayouts>
<igDP:FieldLayout>
<igDP:Field Name="Name" >
<igDP:Field.Settings>
<igDP:FieldSettings EditorType="{x:Type igEditors:XamComboEditor}"/>
</igDP:Field.Settings>
</igDP:Field>
</igDP:FieldLayout>
</igDP:XamDataGrid.FieldLayouts>
</igDP:XamDataGrid>
</Grid>
コンストラクターのコード ビハインドで grid1 の DataContext を設定しています。これは WPF 4.0 では機能しますが、3.5 では機能しません。3.5 では、「参照 'ElementName=grid1' でバインドするソースが見つかりません」というエラーが表示されます。3.5 でバインドを機能させるには、ObjectDataProvider を次のように使用する必要がありました。
<Grid Name="grid1">
<Grid.Resources>
<ObjectDataProvider x:Key="myData" ObjectType="{x:Type local:ViewModel}"></ObjectDataProvider>
<Style TargetType="{x:Type igEditors:XamComboEditor}">
<Setter Property="ItemsSource" Value="{Binding Source={StaticResource myData}, Path=Test}"/>
<Setter Property="DisplayMemberPath" Value="Key"/>
</Style>
</Grid.Resources>
<igDP:XamDataGrid DataSource="{Binding}" Name="xamDataGrid1" VerticalAlignment="Top" >
<igDP:XamDataGrid.FieldLayouts>
<igDP:FieldLayout>
<igDP:Field Name="Name" >
<igDP:Field.Settings>
<igDP:FieldSettings EditorType="{x:Type igEditors:XamComboEditor}"/>
</igDP:Field.Settings>
</igDP:Field>
</igDP:FieldLayout>
</igDP:XamDataGrid.FieldLayouts>
</igDP:XamDataGrid>
</Grid>
最初のコード スニペットの ElementName バインディングが WPF 3.5 で機能しない、またはそこで何か問題を起こしたという既知の理由はありますか? 前もって感謝します。