方法 : ComboBoxItem を取得する
更新 : 2007 年 11 月
ComboBox をデータ ソースにバインドするときに、特定のアクションを実行するために ComboBoxItem を取得する必要が生じることがよくあります。ComboBoxItem を取得するには、ItemContainerGenerator を使用します。次の例は、myCities というデータ ソースにバインドされた ComboBox を示しています。
使用例
<ComboBox Name="cb" Margin="10,10,3,3" Width="200" Height="30" Grid.Column="0" Grid.Row="2"
ItemsSource="{StaticResource myCities}" Text="My Cities"
IsEditable="true" IsReadOnly="true"
IsDropDownOpen="True" StaysOpenOnEdit="True">
</ComboBox>
ComboBoxItem を取得するには、ItemContainerGenerator.ContainerFromIndex メソッドを使用して、目的の項目のインデックスを指定します。次の例では、まず項目のインデックスを指定し、次に ComboBox で目的の項目を選択して、ComboBoxItem を取得します。
private void GetComboBoxItem(int index)
{
ComboBoxItem cbi = (ComboBoxItem)
(cb.ItemContainerGenerator.ContainerFromIndex(index));
cbi.IsSelected = true;
Info.Content = "I visited " +
(cbi.Content.ToString()) + ".";
}
データ ソースに目的の項目のオブジェクトがあっても、インデックスがわからない場合があります。その場合は、ItemContainerGenerator.ContainerFromItem メソッドを使用して ComboBoxItem を取得します。次の例では、まずコレクション内のオブジェクトを指定し、次に ComboBox で目的の項目を選択して、ComboBoxItem を取得します。
ComboBoxItem cbi = (ComboBoxItem)
cb.ItemContainerGenerator.ContainerFromItem(objectInCollection);
cbi.IsSelected = true;