你还没有提到数据模板的位置。我会试图涵盖两种非常相似的可能性。
如果您在用户控件的资源中拥有数据模板,则可以在用户控件的代码隐藏文件后面设置事件。
<UserControl.Resources>
<DataTemplate DataType="{x:Type local:Staff}">
<StackPanel>
<TextBlock Text="{Binding Path=Name}"/>
<Image Name="staffImage" PreviewMouseLeftButtonDown="staffImage_PreviewMouseLeftButtonDown"/>
</StackPanel>
</DataTemplate>
</UserControl.Resources>
然后在UserControl.cs
private void staffImage_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
}
现在,如果你在一个资源字典的datetemplate那么你可以做同样的事情,但你需要创建隐藏文件代码的资源字典。 See here。
对于拖放漫游本身...请参阅Jamie Rodriguez的帖子here。
希望有所帮助。
感谢您的回答,但不幸的是它不适用于我。我已经更新了关于DataTemplate和ListBox在哪里的问题。按照您的建议,我无法将逻辑放入DataTemplate中。 正如我所看到的那样,DataTemplate规定视图应该是什么样子,而不是它应该做什么。另外,正如你在我的解释中看到的那样,视图存在于一个带有ListBox的组件中,还有其他一些我需要“拖放”拖动的对象的东西,而DataTemplate则放在一个单独的程序集中 – 2009-05-29 15:37:35