从未调用过 WPF ListBoxItem 事件
WPF ListBoxItem events never called
我想在 ListBoxItem 上触发事件
<ListBox.ItemTemplate>
<DataTemplate>
</DataTemplate>
</ListBox.ItemTemplate>
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<EventSetter Event="Drop"
Handler="Item_Drop"/>
<EventSetter Event="PreviewMouseLeftButtonDown"
Handler="Item_PreviewMouseLeftButtonDown" />
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
在代码隐藏中,有两个事件处理程序
private void Item_Drop(object sender, DragEventArgs e)
{
}
private void Item_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
}
永远不会调用事件处理程序,我做错了什么?
顺便说一句,DataTemplate 包含一个 Grid 控件。我已经尝试使用 Grid 控件上的事件。同样的结果,事件处理程序从未被调用或从未到达。
仅供参考,我没有检查这个的环境。我将描述问题及其解决方案。但是我的代码可能有错误。
主要是我不记得默认情况下边框或网格是否伸展。
测试这个的主要事情是应用颜色并尝试宽度 + 高度只是为了检查你的事件。
事件设置器很好。
这里的问题是没有检测到事件。
这样做的原因是您的项目的宽度为 0,高度为 0,因此它不会占用任何 space 被点击或掉落在
另一个原因是颜色。
如果拉伸的项目没有颜色,则不会绘制任何像素,因此事件不会发生。
即使应用 Background = "Transparent" 也可以解决问题。
<ListBox.ItemTemplate>
<DataTemplate>
<Border Background="Red" /> <!-- Or Grid or any thing that stretches out -->
</DataTemplate>
</ListBox.ItemTemplate>
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<EventSetter Event="Drop"
Handler="Item_Drop"/>
<EventSetter Event="PreviewMouseLeftButtonDown"
Handler="Item_PreviewMouseLeftButtonDown" />
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
我想在 ListBoxItem 上触发事件
<ListBox.ItemTemplate>
<DataTemplate>
</DataTemplate>
</ListBox.ItemTemplate>
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<EventSetter Event="Drop"
Handler="Item_Drop"/>
<EventSetter Event="PreviewMouseLeftButtonDown"
Handler="Item_PreviewMouseLeftButtonDown" />
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
在代码隐藏中,有两个事件处理程序
private void Item_Drop(object sender, DragEventArgs e)
{
}
private void Item_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
}
永远不会调用事件处理程序,我做错了什么?
顺便说一句,DataTemplate 包含一个 Grid 控件。我已经尝试使用 Grid 控件上的事件。同样的结果,事件处理程序从未被调用或从未到达。
仅供参考,我没有检查这个的环境。我将描述问题及其解决方案。但是我的代码可能有错误。
主要是我不记得默认情况下边框或网格是否伸展。 测试这个的主要事情是应用颜色并尝试宽度 + 高度只是为了检查你的事件。
事件设置器很好。 这里的问题是没有检测到事件。 这样做的原因是您的项目的宽度为 0,高度为 0,因此它不会占用任何 space 被点击或掉落在
另一个原因是颜色。 如果拉伸的项目没有颜色,则不会绘制任何像素,因此事件不会发生。 即使应用 Background = "Transparent" 也可以解决问题。
<ListBox.ItemTemplate>
<DataTemplate>
<Border Background="Red" /> <!-- Or Grid or any thing that stretches out -->
</DataTemplate>
</ListBox.ItemTemplate>
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<EventSetter Event="Drop"
Handler="Item_Drop"/>
<EventSetter Event="PreviewMouseLeftButtonDown"
Handler="Item_PreviewMouseLeftButtonDown" />
</Style>
</ListBox.ItemContainerStyle>
</ListBox>