我遇到了Silverlight 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;
单击项目时一切正常。但是,如果我在ComboBox中使用ItemTemplate,如下所示:
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:
public class InstallationClass
{
public int PK;
public string Installation;
}
现在ComboBox显示正确,但是当我点击文本时,如果项目没有任何反应。如果我单击文本本身的右侧,则会像正常一样选择项目。点是;自然要做的就是单击文本本身,而不是单击它的左侧或右侧。知道为什么会这样,有任何想法如何纠正它?这是一个Silverlight错误吗?
答案 0 :(得分:1)
您的DataTemplate应如下所示:
<ComboBox Name="drpInstallation" SelectionChanged="drpInstallation_SelectionChanged">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBox Text="{Binding Installation}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
问题是ComboBoxItems消耗了click事件,而不是冒泡它。