Двойной щелчок ListBox для выбора элемента ребра - PullRequest
0 голосов
/ 06 июля 2018

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

1 Ответ

0 голосов
/ 07 июля 2018

Set 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>

Также вы должны установить событие двойного щелчка на элементах, в настоящее время оно назначено всему списку, поэтому, например, двойной щелчок на полосе прокрутки вызовет событие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...