首页 文章

在Silverlight 3 ComboBox中使用ItemTemplate时,不会触发SelectionChanged

提问于
浏览
1

我遇到了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显示正确,但是当我单击 text 时,如果项目没有任何反应 . 如果我单击文本本身右侧,则会像正常一样选择项目 . 点是;自然要做的就是单击文本本身,而不是单击它的左侧或右侧 . 知道为什么会这样,有任何想法如何纠正它?这是一个Silverlight错误吗?

1 回答

  • 1

    您的DataTemplate应如下所示:

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

    问题是ComboBoxItems消耗了click事件,而不是冒泡它 .

相关问题