WPF Listbox a doubleclick

0

Witam,

Mam taką sytuację: Mam listbox na formie WPF. I wszystko było by ok gdyby nie... po wciśnięciu doubleclick myszą, nie uruchamiał obsługę zdarzenia doubleclick na scrollbarze. Jak nie ma zaznaczonej opcji na liście - jest ok - ale jak jest zaznaczona jakaś opcja (ale nie ta właściwa), i użytkownik robi "doubleclick", to wykonuje się zdarzenie niepożądane.

Pytanie jest następujące - czy można jakość "wyłączyć" zdarzenie doubleclick dla konkretnych obszarów kontrolki listbox (mowa o scrollbar-ze).

Mam jeszcze drugie działanie niepożądane na liście listbox. Przykładowo lista może wyświetlić 5 opcji, ja mam na liście 7 i dokładnie 6 opcja jest na kontrolce widoczna częściowo (połowa opcji). Wciśnięcie doubleclick powoduje takie zajwisko (pierwszy clik powoduje "przesunięcie" - "wyświetlenie" 6 opcji jako całą opcje widoczną. A drugi click zaznacza opcję 7 i uruchamia zdarzenie dla zaznaczonej opcji 7.

Jestem otwarty na wszelkie sugestie...

pozdrawiam serdecznie,

0

Pierwsza sprawa nie ma czegoś takiego jak forma WPF ;) tutaj operujesz Window albo UC a itemy najmniej zagnieżdżone są w gridach.

2 pytanie jak u ciebie wygląda implementacja listboxa ? w XAML bo widziałem różne obpcje żeby był scroll View ;)

Tak to powinno wyglądać. Główny widok dzielisz sobie na row i kolumny. Najlepiej podpinasz nowego grida oraz ustawiasz w nim położenie. Dzięki czemu wszystko w środku ładnie Ci się skaluje jak można tak to nazwać podczas rozciągania okna i tam podpinasz resztę.
pierw scrollViewer a potem item w naszym przypadku ListBox

 
<Grid x:Name="Grid_AcctionInformation"
              Background="AntiqueWhite"
              Grid.Row="2">

            <ScrollViewer>
                <ListBox x:Name="LB_Information" Margin="1" />
            </ScrollViewer>

        </Grid>

I teraz akcje podwójnego przycisku ustawiasz sobie w ListBox i nie powinno Ci wywołać się zdarzenie dubel click jak klikniesz w scrola. Przynajmniej ja tak nigdy nie miałem.

Głownie jak do listboxa dodajesz czyste stringi iformacje. I po kliknięciu w nie chcesz coś wywoływać powiedzmy. To i tak musisz zabezpieczyć program tak, żeby się nie wysypał w przypadku jak kliknie w puste miejsce.

Inaczej mówiąc, zrób sobie jakąś funkcje sprawdzającą czy został wybrany odpowiedni dopuszczalny item. Jak tak to dopiero wykonaj akcje zdarzenia.

0

Co do drugiego pytania. U ciebie duble clik działa tak.

Podwójne zdarzenie wywołuje akcje główną. Akcja główna sprawdza wybrany index i dla niego wywołuje zdarzenie.
Jak chcesz to zabezpieczyć musiał byś wywołać 2 zdarzenia.

Powiedzmy 1 zaznaczenie wartości lub pojedyńcze kliknięcie pobiera index do weryfikacji z duble clickiem i sprawdza czy wybrane pole jest to samo. Jeżeli tak to odpala, jeżeli nie to informuje że użytkownik źle wybrał opcję.

I zrób tak żeby kontrolki nie były do połowy przykryte to inna sprawa

0

Dzięki bardzo za wskazówkę. Popołudniu postaram się sprawdzić i dam znać czy pomogło. Pozdrawiam serdecznie,

1 użytkowników online, w tym zalogowanych: 0, gości: 1