1

我遇到了 Silverlight ComboBox 的一些奇怪行为。我从一些简单的代码开始:

xml:

<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:

xml:

<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;

安装类.cs:

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

现在 ComboBox 显示正确,但是当我单击文本时,如果项目没有任何反应。如果我单击文本本身的右侧,则该项目将像正常一样被选中。要点是;很自然的做法是单击文本本身,而不是单击文本的左侧或右侧。知道为什么会发生这种情况,以及如何纠正它吗?这是 Silverlight 错误吗?

4

1 回答 1

1

您的 DataTemplate 应如下所示:

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

问题是 ComboBoxItems 消耗点击事件,而不是冒泡。

于 2010-03-16T22:23:56.443 回答