【问题标题】:SelectionChanged event not raised未引发 SelectionChanged 事件
【发布时间】:2013-04-25 03:59:40
【问题描述】:

有没有办法修复Selection Change Event的已知错误,如果再次点击相同的项目,则选择不起作用。

为了提供更多背景信息,我的场景是我的数据透视页面中有四个项目,当我单击其中一个项目时,我将被导航到另一个页面。现在我的困境是,当我再次选择相同的项目时,导航不起作用或什么也没有发生。

请让我知道您建议的修复方法,非常感谢。

  <ListBox x:Name="lbviewlist" ItemsSource="{Binding items}">
                <i:Interaction.Triggers>
                    <i:EventTrigger EventName="selectionchanged">
                        <Command:EventToCommand Command ="{Binding ItemListCommand }" PassEventArgsToCommand="True"  />
                    </i:EventTrigger>
                </i:Interaction.Triggers>
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel>
                            <TextBlock TextWrapping="Wrap" Text="{Binding itemName}"   FontSize="30"  Margin="10,0,0,0" Style="{StaticResource PhoneTextTitle2Style}" Foreground="CadetBlue"/>
                            <TextBlock TextWrapping="Wrap" Text="{Binding itemDescription}"   FontSize="20"  Margin="15,5,0,10"/>
                          </StackPanel>
                    </DataTemplate>
                </ListBox.ItemTemplate>

【问题讨论】:

  • 这不是一个错误,SelectedChanged 完全按照它应该做的事情,它在选择更改时触发,如果选择了相同的元素,它没有改变所以它不会触发。您可能必须使用 Item 上的 MouseEvents 或 ListBox 本身来处理此问题
  • @sa_ddam213 请教我怎么做?我只是这个领域的新手,不知何故很难理解这个概念。您的意思是我应该将选择更改事件更改为鼠标事件吗?顺便说一下,我正在使用 MVVM

标签: wpf events selecteditem selectionchanged


【解决方案1】:

一个很好的替代方法是将每个项目中的所有内容包含在一个按钮中,该按钮的样式是不可见的,因此您永远看不到它,但它覆盖了它封装的项目的表面。如果您使用 MVVM,您可以将相同的命令属性绑定到每个“按钮”,并将按钮(您的数据项)的 DataContext 绑定到命令参数。然后,每当您单击一个项目时,您每次都会触发该命令。 您可能希望将项目控件更改为简单的东西,以便选择更改事件不会妨碍您。

【讨论】:

  • 如何在按钮内包含所有项目并使其不可见?请查看我上面的 XAML
  • 我能够将内容放在按钮中,但是事件没有触发?有什么想法吗?
  • 为了清楚起见,我们在这里讨论的是按钮的“点击”事件,而不是组合框的“SelectionChanged”事件。
猜你喜欢
  • 1970-01-01
  • 2014-05-02
  • 1970-01-01
  • 1970-01-01
  • 2011-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-01
相关资源
最近更新 更多