方法 : 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;

参照

処理手順

方法 : ListBoxItem を取得する

概念

データ バインディングの概要