因此,当我使用显示其项目的标准WPF ListBox时,我可以在屏幕上看到底部项目的一半。当我单击该项目时,它会进入视图,因此我可以看到整个项目。太棒了;但是,我正在双击打开一个表单。如果我双击的项目是最后一个项目,并且只有一部分在视图中,则第一次单击会将项目带入视图,但是第二次单击将选择下一个项目并将其打开。目的是打开获得首次点击的项目。有什么办法解决吗? 这是xaml
<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的值,您将看到双击一个项目将列表中的下一个项目显示为选定项。 谢谢
答案 0 :(得分:1)
设置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>
此外,您还应该在项目上设置双击事件,当前它已分配给整个列表框,因此双击滚动条将触发该事件。