需要的是在点击时的ControlTemplate到ListBoxItem的触发事件
-
28-09-2019 - |
题
我重写的风格我ListBoxItems用的ControlTemplate,但是通过这样做,我失去了处理程序,我ListBoxItem的单击事件。我发现了一个帖子,这是在说我需要在ControlTemplate中添加事件处理程序有帮助的,但我不知道如何做到这一点。
任何帮助&方向上这样做是非常感谢!
解决方案
ListBoxItem中没有一个“click”事件,所以目前尚不清楚你在做什么,或者什么功能,当您添加的ControlTemplate你失去了。
如果您在ControlTemplate中有一个按钮,你可以设置它的Click事件完全相同的方式,你会外ContolTemplate相同。这里有一个简单的例子,其中一个ListBoxItem什么都不做比其他展会的内容旁的按钮,该按钮调用名为事件处理程序“OnClickMeButtonClicked”:
<Style TargetType="ListBoxItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<DockPanel>
<Button Content="ClickMe" Click="OnClickMeButtonClicked" />
<ContentPresenter />
</DockPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
如果你的意思是你希望你的ListBoxItem的显示不同,具体取决于该项目是否被选中与否,只是设置一个触发IsSelected:
<ControlTemplate TargetType="ListBoxItem">
<Border Name="Bd">
<ContentPresenter />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="true">
<Setter TargetName="Bd" Property="Background" Value="Blue" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
其他提示
难道真是鼠标点击你后,还是你只是回应中选择一个变化?如果是这样,你可能想使用ListBox.SelectionChanged代替。
否则,我相信这是一样简单添加一个onclick = ...在模板;发送方将其得到点击的元素。
不隶属于 StackOverflow