0
我试图让一个标准的WPF列表框被动态填充,并为列表框中的每个项目单击时启动一个命令。 目前我有一个工作列表框,可以填充,每个项目将触发正确的命令,但为了激发命令,我必须单击列表项目两次。 即点击一次选择该项目,然后点击实际文本以激发该命令。为什么我需要在WPF列表框项目上点击两次以激发命令?
由于名单是动态创建的,我不得不创建列表项的数据模板:
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Margin="4,2,4,2">
<Hyperlink TextDecorations="None" Command="MyCommands:CommandsRegistry.OpenPanel">
<TextBlock Text="{Binding}" Margin="4,2,4,2"/>
</Hyperlink>
</TextBlock>
</DataTemplate>
</ListBox.ItemTemplate>
基本上,我怎么删除需要点击两次?我尝试使用事件触发器在选择列表框项目时触发超链接元素上的单击事件,但我无法使其工作。 或者,有没有更好的方法来动态填充列表框并将命令附加到每个列表项?
谢谢
是的,你说得对,该命令会被触发时,只需点击超链接的文本,但给人无所事事的外观。 命令执行方法需要选定的列表项目才能执行操作,但是仅当单击超链接文本时,列表项目才会被选中,因此无法执行操作。 那么,会改变列表项IsSelected属性的超链接上的数据触发器工作?是超链接元素是列表项的子项的问题吗? 谢谢 – Donal 2010-05-27 11:52:59
@Donal,我更新了我的答案,为您提供了一个可能的解决方案,虽然它没有选择该项目 – 2010-05-27 12:00:45
太棒了!谢谢,你的代码工作。出于某种原因,我忽略了使用CommandParameter。查找祖先绑定似乎也很有用。 – Donal 2010-05-27 12:26:48