이벤트 핸들러가 아닌 바인딩 사용을 고려해야합니다. 다음과 같이 콤보를 선언
:이 훨씬 청소기 코드 및 프리젠 테이션 및 프로세스 사이에 우려의 큰 분리로 연결
<ComboBox x:Name="cboCountries" DisplayMemberPath="Name" SelectedItem="{Binding SelectedCountry}" ItemsSource="{Binding Countries}" />
당신은 다음 창에 모음에 콤보 상자를 바인딩 (또는 바람직하게는 뷰 모델) :
public Window1()
{
InitializeComponent();
DataContext = this;
this.Countries = new ObservableCollection<Country>();
this.Countries.Add(new Country {Id = 1, Name = "United Kingdom" });
this.Countries.Add(new Country {Id = 1, Name = "United States" });
}
public ObservableCollection<Country> Countries {get; set;}
private Country selectedCountry;
public Country SelectedCountry
{
get { return this.selectedCountry; }
set
{
System.Diagnostics.Debug.WriteLine(string.Format("Selection Changed {0}", value.Name));
this.selectedCountry = value;
}
}
콤보의 SelectedValue 속성에 바인딩 식을 발사 SELECTEDCOUNTRY의 속성 setter가 발생할 때마다 콤보에서 선택한 항목이 변경.
public class Country
{
public int Id { get; set;}
public string Name {get; set;}
}
캐스트가 성공하지 못하면 'as'를 사용하면 예외가 명확 해 지므로 여기서는 직접 형변환이 더 좋을 것이라고 생각합니다. – svick
@svick : 아마, ComboBoxItems 주위에 캐스팅 한 후에해야 할 일이 아니기 때문에 아마도 하나도하지 않을 것입니다. –