WPF滑动面板
我想制作一个类似于混合菜单控件的控件: 如图所示,单击资源,菜单将滑出,窗口另一侧的菜单将缩小,并为新的滑动菜单留出空间。在执行任何将其滑回的操作之前,菜单应一直位于该位置。(就像我会把一个按钮放在图片中取消按钮(x)的相同位置) 也不应该像我们使用VS on Blend的工具箱那样,将面板停靠到另一个地方WPF滑动面板,wpf,wpf-controls,Wpf,Wpf Controls,我想制作一个类似于混合菜单控件的控件: 如图所示,单击资源,菜单将滑出,窗口另一侧的菜单将缩小,并为新的滑动菜单留出空间。在执行任何将其滑回的操作之前,菜单应一直位于该位置。(就像我会把一个按钮放在图片中取消按钮(x)的相同位置) 也不应该像我们使用VS on Blend的工具箱那样,将面板停靠到另一个地方 我该如何实现这一目标?我创建了一个窗口,向您展示如何实现目标。它在窗口的右上方有两个按钮,如果单击每个按钮,红色或黑色边框将展开 <Window x:Class="WpfApplic
我该如何实现这一目标?我创建了一个窗口,向您展示如何实现目标。它在窗口的右上方有两个按钮,如果单击每个按钮,红色或黑色边框将展开
<Window x:Class="WpfApplicationUpper.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:my="clr-namespace:WpfApplicationUpper" Height="100" Width="200">
<Window.Resources>
<ControlTemplate x:Key="VerticalExpander" TargetType="{x:Type Expander}">
<Border Name="ContentBorder"
Width="0">
<ContentPresenter />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsExpanded"
Value="True">
<Setter TargetName="ContentBorder"
Property="Width"
Value="Auto" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Window.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="20" />
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="1" Orientation="Vertical">
<Button Name="B1" Content="T" Click="B1_Click"/>
<Button Name="B2"
Content="F" Click="B2_Click"/>
</StackPanel>
<DockPanel LastChildFill="True">
<Grid DockPanel.Dock="Right">
<Expander Name="MainExpander1"
Template="{StaticResource VerticalExpander}"
IsExpanded="False">
<Border Background="Black"
Width="50">
</Border>
</Expander>
<Expander Name="MainExpander2"
Template="{StaticResource VerticalExpander}"
IsExpanded="False"
DockPanel.Dock="Right">
<Border Background="Red"
Width="50">
</Border>
</Expander>
</Grid>
<Border Name="NonSliding"
Width="100"
Height="50"
Background="Green">
</Border>
</DockPanel>
</Grid>
</Window>
我在网上找到了一些代码,它们是用于可固定面板的,但它们不能按我想要的方式工作。我还想做一些简单的功能来实现它。你可能想看看MahApps Metro及其弹出控件。我想它很接近你要找的东西@Hardik我更新了我的答案。MainExpander1.IsExpanded=!主扩展器1.i扩展;
private void B1_Click(object sender, RoutedEventArgs e)
{
MainExpander1.IsExpanded = !MainExpander1.IsExpanded;
}
private void B2_Click(object sender, RoutedEventArgs e)
{
MainExpander2.IsExpanded = !MainExpander2.IsExpanded;
}