0

XAML に DataGridComboBoxColumn がある場合

<DataGridComboBoxColumn Header="Department Id" x:Name="comboboxColumn1"

次のコードを使用して、comboboxColumn1.Itemsource を参照できます。

comboboxColumn1.ItemsSource = comboboxSource;

代わりに DataGridTemplateColumn を使用すると...

<DataGridTemplateColumn x:Name="Col2" Header="name">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <ComboBox x:Name="Combobox2" />
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>
</DataGrid.Columns>

コードで Combobox2.ItemSource を設定するにはどうすればよいですか?

4

1 に答える 1

2

コードビハインドにする必要がありますか??

DataTemplateこれは、WPF がその特定の DataGridCell をレンダリングする必要があるときにいつでも使用されるテンプレートです。したがって、ComboBox のインスタンスは 1 つではなく、表示されている DataGridCells と同じ数のインスタンスがあります (そのため、名前で項目を実際に参照することはできません)。

コード ビハインドで設定する必要がある場合は、ComboBox にイベントを配置してそこに設定します。ItemsSourceLoaded

または、ItemsSource静的でない場合は、ItemContainerGeneratorを使用して特定の DataGrid アイテムのテンプレートを取得し、それを介して見つけることができます。

しかし、実際には、または可能であればバインディングItemsSourceを使用して XAML で を設定する必要があるため、またはバインディングをStaticResource使用して XAML を介してバインディングを設定し、最初に含まれるオブジェクトを見つけて、どうしても必要な場合は、分離コードを使用してください。RelativeSourceElementNameItemsSource

また、動作する理由は、 ではなくをcomboboxColumn1.ItemsSource = comboboxSource;設定していて、という名前のオブジェクトが 1 つしかないためです。DataGridComboBoxColumn.ItemsSourceComboBox.ItemsSourcecomboboxColumn1

于 2012-10-04T17:05:54.887 に答える