wpf - ListBox 双击选择一个边缘项
问题描述
因此,当我使用显示其项目的标准 WPF ListBox 时,我可以在屏幕上看到底部项目的一半。当我单击此项目时,它会将其带入视图,因此我可以看到整个项目。太棒了; 但是,我正在使用双击打开一个表单。如果我双击的项目是最后一个并且只有一部分在视图中,那么第一次单击会将该项目带入视图,但第二次单击会选择下一个项目并将其打开。虽然目的是打开获得第一次点击的项目。有什么办法吗?这是xml
<ListBox
x:Name="TestListBox"
Loaded="TestListBox_OnLoaded"
MouseDoubleClick="TestListBox_OnMouseDoubleClick">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock FontSize="40" Text="{Binding}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
和代码
private void TestListBox_OnLoaded(object sender, RoutedEventArgs e)
{
for (var i = 0; i < 50; i++)
{
TestListBox.Items.Add(i);
}
}
private void TestListBox_OnMouseDoubleClick(object sender, MouseButtonEventArgs e)
{
var foo = TestListBox.SelectedItem;
}
如果您设置断点来查看 foo 的值,您将看到双击一个项目会将列表中的下一个项目显示为选定的项目。谢谢
解决方案
设置 ScrollViewer.CanContentScroll = "False"
<ListBox
x:Name="TestListBox"
Loaded="TestListBox_OnLoaded"
MouseDoubleClick="TestListBox_OnMouseDoubleClick" ScrollViewer.CanContentScroll = "False">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock FontSize="40" Text="{Binding}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
此外,您应该在项目上设置双击事件,目前它已分配给整个列表框,因此双击滚动条将触发事件。
推荐阅读
- vue.js - @vue/cli 使用我的库构建应用程序失败
- powerbi - 比较列值与另一个表中的度量(散点图突出显示)
- bash - 使用一个 bash 命令删除多个 rpm 包
- java - ListView 项目中有多个可点击区域?
- sql - 水平缩放应用程序中的后台线程
- java - 使用远程 SQL 数据库的命令行
- java - 如何从对话框片段中打开新活动
- c# - 如何更改标题列的背景颜色以及如何更改列内标题文本的文本颜色?
- azure-application-insights - Application Insights - 计划分析
- java - 如何在一个语句中打印多个类实例?爪哇