WPF中的Clickable ItemsControl项

时间:2011-08-28 01:04:27

标签: wpf grid onclick

我正在使用ItemsControl来显示数据绑定项的列表,因为每个DataTemplate的核心都是一个Grid,我已经放置了所有绑定控件。

我希望能够点击列表中每个项目的整个区域。但我无法弄清楚如何使该区域可点击。

有关如何使整个网格区域可点击的任何建议都会很棒。

2 个答案:

答案 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)
    {
    }