2013-08-21 22 views
6

bir ayırıcıyı dahil et ListBoxItems öğesindeki öğeler arasında bir ayırıcı eklemem gerekiyor, örneğin öğelerimdeki bazı öğeler ayraçın altına ve bir kısmının üstüne yerleştirilecek . ÖrneğinListe kutusunda

: Yukarıdaki ListBoxBindingContextChanged ControlTemplate değiştirerek yapılır

listboxwithaeparator

: öyle çünkü

<ScrollViewer> 
    <StackPanel> 
     <ItemsPresenter />           
     <Separator BorderBrush="Red" /> 
     <ListBoxItem Content=".." ContentTemplate="..." x:Key="helpItem"/>          
    </StackPanel> 
</ScrollViewer> 

sorun "helpItem" seçili almaz ki ItemsSource'umun bir parçası değil. şimdi yeterli olacaktır seçebilmenizin için

1) Yani benim ItemsSource ile bu maddeyi ilişkilendirmek veya alternatif o seçilebilir hale nasıl benim ilk soru olurdu? Dahası ileride i yerleştirilmiş olacağını daha fazla öğe var wan't olabilir

i fiziksel olarak benim öğeler arasında belirli bir yerde bir Ayırıcı sokacak nasıl liste

2) alt yarısı ItemsPresenter'ımı mantıksal bir noktaya bölmek gibi mi? Eğer toplama bölünmüş Eğer yerine çoklu ListBox kontrollerin

+0

Bunu daha önce de yapmıştım. Birden fazla liste kutusu yığdım ve tek bir liste kutusunun * görünümünü * gösterecek şekilde kenarlıklarını belirledim, ancak her lb'nin yüzeyinin altında kendi öğeleri kaynağı vardı. Tek zorlu bit seçim hareketlerini koordine ediyordu, böylece son kullanıcı 'deneyimi' sadece seçilen bir öğeyi gördü. –

+0

kinda bunu önlemek istedim :) –

+0

Tek bir kontrol kullanmak istediyseniz, hala sizin için bir cevap var: VirtualizingStackPanel'den bir sınıf türetmek ve bunun için kendi ItemsControlGenerator'ı uygulamak. Bunu daha önce de yaptım ve ondan sonra ne yapacağını ona kanıtlayabilir. Dezavantajlı olarak, ICG'yi tamamen hoş bir deneyim olarak yazmam. :) –

cevap

8

, "n" küçük gruplar İhtiyacınız en, örneğin Yani aynı ListBox

içine CompositeCollection yoluyla hepsini bir araya kaç ayırıcı dayalı etmek Ben söylüyorlar:

public partial class MainWindow : Window { 
    public List<string> CollA { get; set; } 
    public List<string> CollB { get; set; } 
    public MainWindow() { 
    InitializeComponent(); 

    CollA = new List<string> {"A", "B", "C"}; 

    CollB = new List<string> {"D", "E", "F"}; 

    DataContext = this; 
    } 
} 

ve ben CollA ve CollB arasındaki seperatör istiyorum, sonra benim xaml olabilir:

0 üretmelidir hangi:

enter image description here

Şimdi ürün fonksiyoneldir ve kaynak-koleksiyonu karşı SelectedItem kontrol ederek de SelectedItem dışarı bağlamak ve istediğiniz gibi onunla çalışmak ve, sen algılayabilir Şu anda seçili olan kaynak listesi aittir.

+0

Harika görünüyor, deneyeceğim –

İlgili konular