我在这里放了一个例子链接:http://activeden.net/item/xml-horizontal-vertical-accordion-banner-rotator/full_screen_preview/127714?ref=premiumtemplates
我尝试用WPF实现类似的东西(但更基本)。不是飞行文本的东西,只是基本的导航思想。我试着用一些扩展器控件和堆栈面板来构建它。我的想法是这样的:
<ItemsControl Grid.Row="1" IsTabStop="False" ItemsSource="{Binding Path=tabs,Mode=OneWay}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<ContentPresenter Content="{Binding}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Orientation="Vertical" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>我使用的是MVVM,所以还有一个应用的模板:
<DataTemplate DataType="{x:Type vm:TabulatorViewModel}">
<Expander HorizontalAlignment="Stretch" VerticalAlignment="Stretch" ExpandDirection="{Binding .direction,Mode=OneWay}" IsExpanded="{Binding .isExpanded,Mode=TwoWay}" Header="{Binding .header,Mode=OneWay}" >
<Expander.Style>
<Style TargetType="{x:Type Control}">
<Setter Property="Template" Value="{StaticResource HorizontalExpanderRight}" />
<Style.Triggers>
<DataTrigger Binding="{Binding .direction}" Value="Left">
<Setter Property="Template" Value="{StaticResource HorizontalExpanderLeft}" />
</DataTrigger>
</Style.Triggers>
</Style>
</Expander.Style>
<StackPanel>
<Label Content="{Binding .seitenInhalt.Header,Mode=OneWay}"></Label>
<TextBox Text="{Binding .seitenInhalt.Inhalt,Mode=OneWay}"></TextBox>
<Button Content="zurück" Command="{Binding .seitenInhalt.MovePreviousCommand}" />
<Button Content="vor" Command="{Binding .seitenInhalt.MoveNextCommand}"/>
</StackPanel>
</Expander>
</DataTemplate>所以,这是有效的,至少在某种程度上是这样。
我当前项目的两个屏幕截图来解释这个问题:由于名誉点的原因,无法发布图片。
所有项目在一起应该使用堆叠面板的完整宽度,而不是像图片中那样。由于名誉点的原因,无法发布图片。
所有的项目都应该使用完整的宽度,但是一个展开的项目应该比其他项目的宽度更大。如图所示,但折叠的项目应使用剩余空间,每个项目都以相同的数量填充空白)
任何帮助都是很好的,我希望可以理解我的目标/问题。
发布于 2011-08-01 23:43:27
我认为您要使用的是UniformGridPanel或WrapPanel,它将使用可用的最大宽度,而不是被设置为使用尽可能最小宽度的StackPanel。面板概述是here。
发布于 2011-08-02 00:26:22
您可能希望使用Grid,如果展开项,则将列/行的Height/Width设置为*,否则设置为Auto。
此外,如果在ItemsControl中使用网格,则需要在ContentPresenter而不是ItemTemplate上设置Grid.Row/Grid.Column和Width/Height属性,因为ItemsControl中的ContentPresenter始终包装在ContentPresenter中。
https://stackoverflow.com/questions/6900864
复制相似问题