我正在使用ItemsControl来显示数据绑定项的列表,因为每个DataTemplate的核心都是一个Grid,我已经放置了所有绑定控件。
我希望能够点击列表中每个项目的整个区域。但我无法弄清楚如何使该区域可点击。
有关如何使整个网格区域可点击的任何建议都会很棒。
答案 0 :(得分:14)
要制作可点击的内容,您通常可以将其包装在Button中,如果它应该是“不可见的”,您可以更改模板:
<Button.Template>
<ControlTemplate TargetType="{x:Type Button}">
<ContentPresenter />
</ControlTemplate>
</Button.Template>
答案 1 :(得分:4)
您可以使用AttachedCommandBehavior classes from C# Disciples来实现此目标。
在ViewModel中定义一个命令,然后在Grid对象上使用ACB AttachedProperties将MouseLeftButtonUp
事件绑定到命令。
一些代码可以帮助您入门:
<Grid Name="grid" Height="30" ForceCursor="True" Cursor="Hand">
<acb:CommandBehaviorCollection.Behaviors>
<acb:BehaviorBinding Event="MouseLeftButtonUp" Command="{Binding Path=DataContext.EditEventCommand, RelativeSource={RelativeSource AncestorType={x:Type self:Dashboard}}}" CommandParameter="{Binding}" />
</acb:CommandBehaviorCollection.Behaviors>
</Grid>
编辑非MVVM解决方案。
如果您没有按照MVVM指南设计应用程序,上面的代码片段仍然有用,因为您实际上只是绑定到代码隐藏中的命令。
但是,如果你不想去定义命令的麻烦,你可以简单地指定一个要挂钩的事件,如下所示:
XAML文件中的 <Grid MouseLeftButtonUp="Grid_MouseLeftButtonUp">
。
并在代码隐藏中:
private void Grid_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
}