방법: ComboBoxItem 가져오기
업데이트: 2007년 11월
ComboBox를 데이터 소스에 바인딩할 때는 ComboBoxItem에 액세스하여 특정 작업을 수행해야 하는 경우가 많습니다. ItemContainerGenerator를 사용하여 ComboBoxItem을 가져올 수 있습니다. 다음 예제에서는 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>
ItemContainerGenerator.ContainerFromIndex 메서드를 사용하고 원하는 항목의 인덱스를 지정하여 ComboBoxItem을 가져올 수 있습니다. 다음 예제에서는 항목의 인덱스를 지정한 다음 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;