2013-08-21 111 views
6

我需要在我的ListBoxItems中的項目之間加入一個分隔符,例如 ,其中項目源中的某些項目將放置在分隔符下方並且位於其上方。在列表框中包含分隔符

例如:

listboxwithaeparator

以上是通過改變ListBox的控件模板做:

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

的問題是,「helpItem」沒有得到選擇,因爲它是不是我的ItemsSource的一部分。

現在能夠選擇就足夠

1)所以,我的第一個問題是我怎麼能這個項目與我的ItemsSource或關聯或者 使其可選擇?

進一步將來我可能wan't有更多的項目將放在在 我的列表框中

2)我怎麼會在空間上的分隔在我的項目之間某個地點的下半部分,好像要將我的 ItemsPresenter劃分爲邏輯點?

+0

我以前也是這樣。我堆疊了多個列表框,並設置了它們的邊框,使其具有單個列表框的*外觀,但在表面之下,每個列表框都有自己的項目源。唯一棘手的問題是協調選擇手勢,以便最終用戶的體驗只能看到一個選定的項目。 –

+0

有點想避免:) –

+0

如果你想使用一個控件,你仍然有一個答案:從VirtualizingStackPanel派生一個類,併爲它實現你自己的ItemsControlGenerator。我之前也這樣做了,可以證明它會給你以後的。不利的一面是,我不會把ICG寫成完全愉快的經歷。 :) –

回答

8

而不是多個ListBox控制,如果你能分裂你收集到「n」的基礎上有多少分隔符的需要,你可以把它們放在一起通過CompositeCollection到同一ListBox

因此,例如,小團體說我有:

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; 
    } 
} 

,我想CollACollB之間的分隔符,然後我的XAML可以是:

<ListBox> 
    <ListBox.Resources> 
    <CollectionViewSource x:Key="CollectionOne" 
          Source="{Binding CollA}" /> 
    <CollectionViewSource x:Key="CollectionTwo" 
          Source="{Binding CollB}" /> 
    </ListBox.Resources> 
    <ListBox.ItemsSource> 
    <CompositeCollection> 
     <CollectionContainer Collection="{Binding Source={StaticResource CollectionOne}}" /> 
     <ListBoxItem HorizontalContentAlignment="Stretch" 
        IsEnabled="False" 
        IsHitTestVisible="False"> 
     <Rectangle Height="2" 
        Fill="Gray" /> 
     </ListBoxItem> 
     <CollectionContainer Collection="{Binding Source={StaticResource CollectionTwo}}" /> 
    </CompositeCollection> 
    </ListBox.ItemsSource> 
</ListBox> 

應該產生:

enter image description here

現在,項目功能,您可以通過檢查對源收集的SelectedItem出綁定SelectedItem和你的願望與它合作,也可以檢測當前選擇的項目所屬的源列表。

+0

聽起來不錯,我會試試看 –

相關問題