如何创建一个与窗口重叠但可移动的控件?
我希望我的usercontrol在窗口之外(不可见),只需按一下按钮就可以通过动画移动到视线/视线之外。动画部分,我得到了。我的问题是将对象放在屏幕的边缘(减去几个像素以允许按钮的可见性)并允许它移动而不改变窗口中的所有其他元素(就像它只是过去一样他们)。我已经尝试将网格留在"浮动"状态,只需在需要时移动渲染变换,但因为它没有特别停靠在任何东西上,所以当使用不同的屏幕尺寸时它完全不在视线范围内。我也尝试使用不同的zindex创建两个网格,但最后我失去了对较低索引的每个控件的访问权限。
答案 0 :(得分:1)
xaml对象中最后声明的元素将是窗口中最顶层的元素。因此,您可以将覆盖网格声明为窗口/容器中的最后一个元素,并将边距设置为窗口外部,然后设置覆盖网格的边距属性的动画,以使其扫入窗口内部。像下面的代码应该会帮助你。您可以根据自己的需要进行更改。如果这是您正在寻找的东西,请告诉我。
<Window x:Class="Test.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vc="clr-namespace:MultiValueConverterFromCode"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<vc:ConcatStringsConverter x:Key="ConcatStringsConverter"/>
</Window.Resources>
<Grid>
<StackPanel>
<TextBox x:Name="text1" Text="Hello"/>
<TextBox x:Name="text2" Text="World"/>
<ToggleButton Content="Toggle" x:Name="toggle"/>
</StackPanel>
<Grid Background="Red" IsHitTestVisible="False" Opacity="0.3" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
<Grid.Style>
<Style TargetType="Grid">
<Setter Property="Margin" Value="525,0,0,0"/>
<Style.Triggers>
<DataTrigger Binding="{Binding IsChecked,ElementName=toggle}" Value="true">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<ThicknessAnimation Duration="0:0:0.2" To="0,0,0,0" Storyboard.TargetProperty="Margin"/>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
<DataTrigger.ExitActions>
<BeginStoryboard>
<Storyboard>
<ThicknessAnimation Duration="0:0:0.2" To="525,0,0,0" Storyboard.TargetProperty="Margin"/>
</Storyboard>
</BeginStoryboard>
</DataTrigger.ExitActions>
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Style>
</Grid>
</Grid>
</Window>