我正在开发的应用程序中有一种手风琴,由扩展器制成,但每个扩展器都是独立的,而不是只允许同时打开一个选项。每个扩展器都与视图模型中的一个集合项相关联。
我目前的解决方案是使用列表框,然后将列表项源绑定到集合,并且使用项模板呈现扩展器和扩展器的内容。
问题在于,列表框将每个扩展器视为一个项目(显然),并允许选择和突出显示。突出显示有点丑陋,可以禁用,但选择会引起一些问题,因为它会导致列表滚动以尽可能多地显示已展开的扩展器。
是否有类似于堆栈面板的WPF控件(也许),可以使用项模板绑定包含的控件,但不会选择和突出显示?
我目前的解决方案是使用列表框,然后将列表项源绑定到集合,并且使用项模板呈现扩展器和扩展器的内容。
问题在于,列表框将每个扩展器视为一个项目(显然),并允许选择和突出显示。突出显示有点丑陋,可以禁用,但选择会引起一些问题,因为它会导致列表滚动以尽可能多地显示已展开的扩展器。
是否有类似于堆栈面板的WPF控件(也许),可以使用项模板绑定包含的控件,但不会选择和突出显示?
<ListBox Grid.Row="0" Grid.Column="0" Width="Auto" SelectionMode="Single" ItemsSource="{Binding Path=MeasurementSources}">
<ListBox.ItemTemplate>
<DataTemplate>
<Expander Header="{Binding Name}" IsEnabled="{Binding Available}">
<ListBox Width="Auto" SelectionMode="Single"
ItemsSource="{Binding Path=Measurements}"
SelectedItem="{Binding Path=SelectedMeasurement}">
<ListBox.ItemTemplate>
<DataTemplate>
<WrapPanel>
<TextBlock Text="{Binding Name}" FontWeight="Bold" />
<TextBlock Text=" "/>
<TextBlock Text="{Binding Created}"/>
</WrapPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Expander>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
ItemsControl
可能是您需要的东西。 - Jon