如何将事件处理程序附加到在WPF中使用数据绑定生成的项目?

时间:2009-04-05 13:35:17

标签: wpf datatemplate pixelsense

我正在为MS Surface单元开发,并使用ScatterView来显示一些数据。下面的场景也可能符合正常的ListBox(以及ListBoxItems)。

当我对ScatterView进行数据绑定时,WPF会自动用DataTemplate包装ScatterViewItems的内容。我想为(生成的)ScatterManipulationCompleted的{​​{1}}事件附加一些事件处理程序,但无法弄清楚如何执行此操作。

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:2)

您可以在容器类型上设置Style并指定EventSetter,如下所示:

<surface:ScatterView>
    <surface:ScatterView.ItemContainerStyle>
        <Style TargetType="{x:Type surface:ScatterViewItem}">
            <EventSetter Event="ScatterManipulationCompleted" Handler="myHandler"/>
        </Style>
    </surface:ScatterView.ItemContainerStyle>
</surface:ScatterView>

答案 1 :(得分:2)

您应该利用路由事件。您可以在ScatterView级别监听此事件。

        <surface:ScatterView surface:ScatterViewItem.ScatterManipulationCompleted="OnManipulationCompleted"/>

答案 2 :(得分:0)

正如经常发生的那样,我现在找到了答案。在过去的20个小时左右我一直在看这个,只是在发布问题后5分钟找到它: - (

任何方式:我找到的解决方案,现在帮助我的是使用ScatterView的Loaded事件。在处理程序中,我有以下循环:

    for (int i = 0; i < MiniBrowserContent.Items.Count; i++)
{
    ScatterViewItem svItem = (ScatterViewItem)(MiniBrowserContent.ItemContainerGenerator.ContainerFromIndex(i));
    svItem.ScatterManipulationCompleted += new ScatterManipulationCompletedEventHandler(svItem_ScatterManipulationCompleted);
}

阅读http://www.beacosta.com/blog/?p=7

之后,这一切都来找我

希望这可以帮助其他人。

再见 巴特