首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ListBoxItem MouseUp事件不会触发

ListBoxItem MouseUp事件不会触发
EN

Stack Overflow用户
提问于 2013-05-27 19:14:19
回答 3查看 1.2K关注 0票数 0

我使用ListBoxItems创建了一个ListBox,并向每个ListBoxItems添加了一个MouseDown事件处理程序。虽然显示了ListBoxItems,但当我单击ListBoxItem时,事件不会触发。

如何设置MouseUp:

代码语言:javascript
复制
TrackedProcessList.ItemsSource = null;
TrackedProcessList.ItemsSource = this.tracks;

/*... some other code that doesn't matter ... */

ListBoxItem[] items = new ListBoxItem[TrackedProcessList.Items.Count];
for (int i = 0; i < TrackedProcessList.Items.Count; i++)
{
    Object obj = TrackedProcessList.Items.GetItemAt(i);
    //TrackedProcessList.UpdateLayout();
    ListBoxItem item = (ListBoxItem)(TrackedProcessList.ItemContainerGenerator.ContainerFromIndex(i));
    if (item != null) 
    {
        item.MouseUp += new MouseButtonEventHandler(ListBoxItem_MouseUp_PostQuestion);
        items[i] = item;
    }
}

应该调用的方法(但它没有调用):

代码语言:javascript
复制
private void ListBoxItem_MouseUp_PostQuestion(object sender, EventArgs e)
{
    MessageBox.Show("ListBoxItem_MouseUp_fired");
}

我的XAML:

代码语言:javascript
复制
<ListBox x:Name="TrackedProcessList" Height="145" Width="605" ItemsSource="{Binding}" BorderThickness="1,0" IsSynchronizedWithCurrentItem="True">
    <DataTemplate>
        <TextBlock  MouseDown="ListBoxItem_MouseUp_PostQuestion" Text="{Binding Path=programName}" HorizontalAlignment="Stretch" ></TextBlock>
    </DataTemplate>
</ListBox>

你知道失败的地方在哪里吗?没有错误。该事件似乎并不绑定到ListBoxItem。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-27 19:44:43

这是因为ListBoxItem已经处理了左击和右击,这意味着您的事件处理程序将不会根据WPF路由的事件规则被触发。您必须为已处理的事件分配PreviewMouseDown事件或添加事件处理程序:

代码语言:javascript
复制
lbi.AddHandler(ListBoxItem.MouseDownEvent, new MouseButtonEventHandler(MouseEvent), true);
票数 2
EN

Stack Overflow用户

发布于 2013-07-22 03:54:03

代码语言:javascript
复制
void OnListBox_Mouse_Down(object sender, MouseButtonEventArgs e)
{
   e.Handled
}

void OnListBox_Mouse_Up(object sender, MouseButtonEventArgs e)
{
   "Do Something";
}
票数 0
EN

Stack Overflow用户

发布于 2017-05-07 16:39:09

使用ContainedControl属性并设置事件:)

代码语言:javascript
复制
kryptonListBox1.ContainedControl.MouseDown += kryptonListBox1_MouseDown_1;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16771932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档