.net 我需要一个手风琴控制WPF4
我正在为WPF.NET4寻找一个手风琴控件.net 我需要一个手风琴控制WPF4,.net,wpf,controls,accordion,.net,Wpf,Controls,Accordion,我正在为WPF.NET4寻找一个手风琴控件 我知道Codeplex上的WPF工具包有一个手风琴控件,但声明它与.NET3.5兼容。它在版本4中工作吗?是的,工具包中的手风琴与.NET 4完全兼容是的,手风琴控件与.NET 4兼容。下面有一篇文章解释了如何使用它: 我们为一个列表框创建了一个自定义样式,其中以扩展器作为部分。这使我们可以通过简单地设置扩展程序的样式(即摘要按钮、无效时为红色等)来定制菜单项的外观。下面是一段代码片段,可以作为起点,您可以自定义它以满足您的需要。注意:使用IsSele
我知道Codeplex上的WPF工具包有一个手风琴控件,但声明它与.NET3.5兼容。它在版本4中工作吗?是的,工具包中的手风琴与.NET 4完全兼容是的,手风琴控件与.NET 4兼容。下面有一篇文章解释了如何使用它:
我们为一个列表框创建了一个自定义样式,其中以扩展器作为部分。这使我们可以通过简单地设置扩展程序的样式(即摘要按钮、无效时为红色等)来定制菜单项的外观。下面是一段代码片段,可以作为起点,您可以自定义它以满足您的需要。注意:使用IsSelected绑定IsExpanded可以使一次只打开一个扩展器,如果希望一次打开多个扩展器,只需删除该扩展器即可
<Style x:Key="VerticalListBoxWithAutoScroll" TargetType="{x:Type ListBox}">
<Setter Property="SnapsToDevicePixels" Value="true"/>
<Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/>
<Setter Property="ScrollViewer.CanContentScroll" Value="true"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Grid>
<ScrollViewer x:Name="scrollviewer">
<ScrollViewer.Template>
<ControlTemplate TargetType="{x:Type ScrollViewer}" >
<Grid >
<ScrollBar x:Name="PART_VerticalScrollBar" Orientation="Vertical"
Value="{TemplateBinding VerticalOffset}"
Maximum="{TemplateBinding ScrollableHeight}"
ViewportSize="{TemplateBinding ViewportHeight}"
Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}"
Width="{Binding Width, ElementName=Panel}">
<ScrollBar.Template>
<ControlTemplate>
<Track x:Name="PART_Track">
<Track.DecreaseRepeatButton>
<RepeatButton Command="ScrollBar.PageUpCommand"
Background="White" BorderBrush="Transparent"/>
</Track.DecreaseRepeatButton>
<Track.IncreaseRepeatButton>
<RepeatButton Command="ScrollBar.PageDownCommand"
Background="White" BorderBrush="Transparent"/>
</Track.IncreaseRepeatButton>
<Track.Thumb>
<Thumb BorderBrush="Transparent"
Background="White" Opacity="0.8" />
</Track.Thumb>
</Track>
</ControlTemplate>
</ScrollBar.Template>
</ScrollBar>
<ScrollContentPresenter Height="Auto" VerticalAlignment="Center"/>
</Grid>
</ControlTemplate>
</ScrollViewer.Template>
<ItemsPresenter/>
</ScrollViewer>
<Grid x:Name="Panel">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<RepeatButton Grid.Row="0" x:Name="LineUpButton" Height="30" Width="80" HorizontalAlignment="Center" Opacity="0" Visibility="Collapsed"
Style="{StaticResource ScrollBarLineButton}"
Content="M 0 8 L 8 8 L 4 0 Z"
Command="{x:Static ScrollBar.LineUpCommand}"
CommandTarget="{Binding ElementName=scrollviewer}"
ClickMode="Hover" />
<RepeatButton Grid.Row="2" x:Name="LineDownButton" Height="30" Width="80" HorizontalAlignment="Center" Opacity="0" Visibility="Collapsed"
Style="{StaticResource ScrollBarLineButton}"
Content="M 0 0 L 4 8 L 8 0 Z"
Command="{x:Static ScrollBar.LineDownCommand}"
CommandTarget="{Binding ElementName=scrollviewer}"
ClickMode="Hover"/>
</Grid>
</Grid>
<ControlTemplate.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="True"/>
<Condition Property="ComputedVerticalScrollBarVisibility" SourceName="scrollviewer" Value="Visible"/>
</MultiTrigger.Conditions>
<MultiTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetName="LineUpButton"
Storyboard.TargetProperty="Opacity" To="0.8" Duration="0:0:0.25"/>
<DoubleAnimation Storyboard.TargetName="LineDownButton"
Storyboard.TargetProperty="Opacity" To="0.8" Duration="0:0:0.25"/>
</Storyboard>
</BeginStoryboard>
</MultiTrigger.EnterActions>
<MultiTrigger.ExitActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetName="LineUpButton"
Storyboard.TargetProperty="Opacity" To="0" Duration="0:0:0.25"/>
<DoubleAnimation Storyboard.TargetName="LineDownButton"
Storyboard.TargetProperty="Opacity" To="0" Duration="0:0:0.25"/>
</Storyboard>
</BeginStoryboard>
</MultiTrigger.ExitActions>
<Setter TargetName="LineUpButton" Property="Visibility" Value="Visible" />
<Setter TargetName="LineDownButton" Property="Visibility" Value="Visible" />
</MultiTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="ItemTemplate">
<Setter.Value >
<DataTemplate>
<StackPanel Background="White">
<Expander Content="{Binding}" Width="Auto" Header="{Binding DisplayName}"
IsExpanded="{Binding IsSelected, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBoxItem}}}" >
</Expander>
</StackPanel>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
谢谢,我已经添加了WPF工具包dll引用和xml名称空间,并开始使用Accordion。但是,它似乎没有正确显示:我认为这是预期的行为,如果您不喜欢它的外观,可以更改控件模板。