这可能是一个非常容易解决的问题,但我在处理事件方面缺乏经验,所以我只是想问一下。
我有一个 ListBox,里面有 ListBoxItems。这些 ListBoxItem 将绑定到数据源,因此它们会发生变化。当对这些 ListBoxItem 中的任何一个执行 MouseDown 操作时,我需要引发一个 MouseDown 事件(因为我正在执行拖放操作)。由于值在变化,我不能期望在 XAML 中将事件连接在一起,如下所示
<ListBox Name="ListBox1">
<ListBoxItem MouseDown="MouseDownEventName">Item A</ListBoxItem>
<ListBoxItem MouseDown="MouseDownEventName">Item B</ListBoxItem>
<ListBoxItem MouseDown="MouseDownEventName">Item C</ListBoxItem>
</ListBox>
如果我有静态值,这将很容易,但由于 ListBox 中的值会改变,我更愿意编写以下 XAML
<ListBox Name="ListBox1" MouseDown="MouseDownEventName">
//Binded Values
</ListBox>
然后,当 ListBoxItem 被选中时,它会将事件冒泡到这个 MouseDownEventName,那时我可以抓取 ListBox1.SelectedItem,问题是,我现在正在尝试这个,但它不起作用。我有以下代码来处理 MouseDown,它目前仅重写标签内容以表示该项目已被 MouseDown'ed。
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
}
private void ListBox_MouseDown(object sender, RoutedEventArgs e)
{
ListBox box = (ListBox)sender;
if (box != null && box.SelectedItem != null)
{
DragDrop.DoDragDrop(box, ItemListBox.SelectedItem, DragDropEffects.Move);
label1.Content = "MouseDown Event Fired";
}
}
}