wpf中,对于listbox中的每一项,当选择时会触发SelectionChanged事件,都会弹出一个messagebox。然而当我连续点击同一项时,第二次就不会弹出messagebox了。是不是此时用SelectionChanged这个触发事件不太合适呢?那么我该怎样实现呢?本人的知识有限,请各位能人give me a hand,万分感谢!
SelectionChanged 是当选项改变是触发的事件,而你连续选择同一项的时候,
选择项并没有改变,你可以用click事件 然后再里面写
{
意思是判断用户单击了listbox控件,并且有选择项的时候才执行代码
if(listbox.selectItem!=null){这里面写你要执行的代码}
}
我这个listbox是通过XmlDataProvider获取的xml中的信息,在各项上触发不了MouseDown,只有在空白区域才能触发。您还有别的方法吗?
@答应不爱你: 那wpf中的listbox还有什么事件
@┢┦偉:
关于mouse的就这几个呀
@答应不爱你: 关于选择的 比如说selectedchange这类的
@┢┦偉: 这类的其他的我没有发现,您能不能再想想别的途径呢?每次点击listbox中的每项都会触发一个事件。
@答应不爱你: 请问你现在解决了吗 我还是遇着同样的问题了
目测是想使用ListBoxItem的单击事件,此事件在ListBox的模板中,若要使用,需声明一个ICommand的附加属性,然后把需要在ListBox处使用该附加属性绑定需要执行的Command。然后声明ListBoxItem的模板,可以在模板最外层添加一个Button,Butoon添加该附加属性。这样就可以实现。
(1)在ListBox处将自定义附加Command属性绑定待执行的Command。
<ListBox
controls:AttachedLib.Command="{Binding Path=HospitalToDeviceCommand}"
</ListBox>
(2)<Style TargetType="ListBoxItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<Button Style="{StaticResource ItemButtonStyle}" Background="Transparent"
Command="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ListBox}, Path=(controls:AttachedLib.Command)}"
CommandParameter="{Binding}">
</Button>
</Setter.Value>
</Setter>
</Style>