【问题标题】:WPF Listbox Selection change not firing on Item clickWPF列表框选择更改未在项目单击时触发
【发布时间】:2013-03-05 06:19:18
【问题描述】:

在我的 wpf 应用程序中,当我选择 listboxItem 时,列表框的 SelectionChanged 事件没有触发。但是,当我单击外边距时会触发事件。 看看下面的快照。

所以基本上,当我点击红色边框(右图)内的部分时,选择更改事件不会触发,但是当我点击外边框(白色部分)时,选择更改会触发。

在搜索问题时,我不确定,但我发现它可能是由于事件隧道导致的问题。但是我对隧道的了解还很少。

那么任何人都可以帮助我如何使它起作用,以便当我单击 listboxitem(红色部分)时选择更改触发

如果我需要进一步明确的问题,请告诉我。 我也将列表框代码放在这里

<ListBox x:Name="Listbox1" SelectionChanged="listBox1_SelectionChanged">
                        <ListBox.ItemTemplate>
                            <DataTemplate>
                                <ListBoxItem Margin="10" Content="{Binding Name}" Height="25" 
                                             BorderBrush="#FF404040" BorderThickness="0,0.25" />
                            </DataTemplate>
                        </ListBox.ItemTemplate>
                    </ListBox>

感谢期待

【问题讨论】:

    标签: wpf listbox wpf-controls listboxitem


    【解决方案1】:

    我想不出您为什么要在 DataTemplateItemTemplate 中添加 ListBoxItem 的原因。 ListBoxItems 是为 ListBox 的每个元素自动生成的,并且您在 DataTemplate 中拥有的任何内容都将用作该 ListBoxItemcontent 因此,在您的情况下,您最终会拥有一个ListBoxItemListBoxItem 内。这可能是原因。

    试试这个方法:

    <ListBox x:Name="Listbox1" SelectionChanged="listBox1_SelectionChanged">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <Label Margin="10" 
                       Content="{Binding Name}" 
                       Height="25"
                       BorderBrush="#FF404040" 
                       BorderThickness="0,0.25" />
             </DataTemplate>                        
        </ListBox.ItemTemplate>
    </ListBox>
    

    【讨论】:

    • 谢谢。我觉得这真是一个愚蠢的错误,我无法追踪它。无论如何,再次感谢。
    • 在 ListBox 中使用 ListBoxItem 作为模板项似乎很合乎逻辑......
    猜你喜欢
    • 2015-03-07
    • 1970-01-01
    • 2013-06-03
    • 2010-12-29
    • 2019-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-15
    相关资源
    最近更新 更多