Итак, когда я использую стандартный 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, вы увидите, что двойной щелчок на элементе показывает следующий элемент в списке как выбранный.
Спасибо