Potrzebuję włączyć separator między elementami w moich obiektach ListBoxItems, na przykład , gdzie niektóre elementy w moim źródle elementów zostaną umieszczone pod separatorem, a niektóre nad nim.Zawiera separator w polu listy
Na przykład:
Powyższe odbywa się poprzez zmianę ControlTemplate z ListBox:
<ScrollViewer>
<StackPanel>
<ItemsPresenter />
<Separator BorderBrush="Red" />
<ListBoxItem Content=".." ContentTemplate="..." x:Key="helpItem"/>
</StackPanel>
</ScrollViewer>
Problemem jest to, że "helpItem" nie uzyskać wybrany, ponieważ jest nie jest częścią mojego ItemsSource.
Na razie jest w stanie wybrać wystarczyłoby
1) Tak więc moje pierwsze pytanie byłoby jak mogłem skojarzyć ten przedmiot z moim ItemsSource lub alternatywnie sprawiają, że do wyboru?
Co więcej w przyszłości i może wa mieć więcej elementów, które zostaną umieszczone w dolna połowa mojego listbox
2) jaki byłby fizycznie umieścić separator w danym miejscu między moje przedmioty , jak gdyby podzielić mój ItemsPresenter w miejscu logicznym?
Miałem to również przed. Układałem wiele listboxów i ustawiałem ich granice tak, aby nadawały * wygląd * pojedynczego pola listy, ale pod powierzchnią każdego lb znajdowało się własne źródło przedmiotów. Jedynym trudnym zadaniem było koordynowanie gestów selekcji tak, aby użytkownik "doświadczony" widział tylko jeden wybrany element. –
jakby chciał tego uniknąć :) –
Jeśli chciałbyś użyć pojedynczej kontrolki, wciąż masz dla ciebie odpowiedź: wypróbuj klasę z VirtualizingStackPanel i zaimplementuj dla niej swój własny ItemControlGenerator. Zrobiłem to wcześniej i mogę potwierdzić, że da ci to, czego szukasz. Z drugiej strony, nie zapisałbym ICG jako całkowicie przyjemnego doświadczenia. :) –