era*_*zap 7 wpf listbox listboxitem
我需要在ListBoxItems中的项目之间加入一个分隔符,例如,我的项目源中的某些项目将放置在分隔符下方,而某些项目位于分隔符下方.
例如 :
以上是通过更改ListBox的ControlTemplate来完成的:
<ScrollViewer>
<StackPanel>
<ItemsPresenter />
<Separator BorderBrush="Red" />
<ListBoxItem Content=".." ContentTemplate="..." x:Key="helpItem"/>
</StackPanel>
</ScrollViewer>
Run Code Online (Sandbox Code Playgroud)
问题是"helpItem"没有被选中,因为它不是我的ItemsSource的一部分.
现在可以选择它就足够了
1)所以我的第一个问题是如何将这个项目与我的ItemsSource相关联,或者让它可以选择?
未来还有更多,我可能不会有更多的项目放在我的列表框的下半部分
2)我如何将分隔符放置在我的项目之间的给定位置,就像将我的ItemsPresenter划分为逻辑位置一样?
而不是多个的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;
}
}
Run Code Online (Sandbox Code Playgroud)
我想之间的分隔符CollA
和CollB
,然后我的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>
Run Code Online (Sandbox Code Playgroud)
应该产生:
现在项目是可用的,您可以根据需要绑定SelectedItem
输出并使用它,并且通过针对源集合检查SelectedItem,您可以检测当前所选项目所属的源列表.
归档时间: |
|
查看次数: |
2960 次 |
最近记录: |