2009-11-04 4 views
1

Silverlight ComboBox에서 이상한 동작이 발생합니다. 나는 몇 가지 간단한 코드로 시작 :Silverlight 3에서 ItemTemplate을 사용할 때 SelectionChanged가 트리거되지 않음 ComboBox

XAML :

<ComboBox Name="drpInstallation" SelectionChanged="drpInstallation_SelectionChanged" /> 

CS : 항목을 클릭하면

List<string> installations = new List<string>(); 
installations.Add("Testing 123"); 
installations.Add("Antoher test"); 
installations.Add("Yeah"); 
drpInstallation.ItemsSource = installations; 

모든 것이 잘 작동합니다. 그러나,이 같은 콤보 상자에 ItemTemplate을 사용하는 경우 : 제대로

public class InstallationClass 
{ 
    public int PK; 
    public string Installation; 
} 

이제 콤보 상자가 표시됩니다

XAML :

<ComboBox Name="drpInstallation" SelectionChanged="drpInstallation_SelectionChanged"> 
    <ComboBox.ItemTemplate> 
     <DataTemplate> 
      <ComboBoxItem Content="{Binding Installation}" /> 
     </DataTemplate> 
    </ComboBox.ItemTemplate> 
</ComboBox> 

CS :

ICollection<InstallationClass> installations = a list of the installation class; 
drpInstallation.ItemsSource = installations; 

InstallationClass.cs을 그러나 텍스트을 클릭하면 아무 반응이 없습니다. 텍스트 자체의 오른쪽을 클릭하면 항목이 정상적으로 선택됩니다. 요점은; 자연스러운 일은 텍스트의 왼쪽이나 오른쪽이 아닌 텍스트 자체를 클릭하는 것입니다. 왜 이런 일이 일어나는지, 그리고 어떤 생각을 어떻게 고쳐야할까요? Silverlight 버그입니까?

답변

1

귀하의 DataTemplate은 다음과 같아야합니다

<ComboBox Name="drpInstallation" SelectionChanged="drpInstallation_SelectionChanged"> 
    <ComboBox.ItemTemplate> 
     <DataTemplate> 
      <TextBox Text="{Binding Installation}" /> 
     </DataTemplate> 
    </ComboBox.ItemTemplate> 
</ComboBox> 

문제는 ComboBoxItems 오히려 그것을 버블 링보다, 클릭 이벤트를 소비하는 것이 었습니다.

+0

이 문제를 피할 수 있도록 코드를 다시 작성했지만 논리적 인 것처럼 받아 들여진 해결책으로 이것을 설정합니다.) –

관련 문제