我正在为WP8.1构建一个应用程序,我需要一个自定义键盘将一些特定字符输入到TextBox中。我决定使用Flyout通过一系列按钮显示用户控件,这样用户就可以点击每个按钮添加一个新角色。
一切正常,但问题是我找不到在页面后半部分或页面底部显示Flyout的方法。 这是我用来显示它的方法:
private void Button_Click(object sender, RoutedEventArgs e)
{
var flyout = new Flyout();
var tb = new CustomKeyboard();
flyout.Placement = FlyoutPlacementMode.Bottom;
flyout.ShowAt(Window.Current.Content as FrameworkElement);
}
这样可行,但即使我选择了底部放置,弹出按钮也会显示在我的页面顶部。我还尝试创建一个有两行的网格,第二行有另一个Grid,并用内部网格作为FrameworkElement调用弹出窗口,但它仍然显示在我的页面顶部,我不知道这是为什么。
我错过了什么吗?有没有办法在底部显示该弹出窗口,或者是否有其他控件/类可以用来做到这一点?
谢谢! 塞尔吉奥
编辑:我最终使用了网格和一些故事板,如建议的那样:)
<!--Transitions-->
<Page.Resources>
<Storyboard x:Name="tastieraInDestra">
<DoubleAnimation Storyboard.TargetName="tastiera" Storyboard.TargetProperty="Opacity"
From="0.0" To="1.0" Duration="0:0:0.3"/>
<DoubleAnimation Storyboard.TargetName="SlideIn" Storyboard.TargetProperty="X"
From="750" To="0" Duration="0:0:0.4"/>
</Storyboard>
<Storyboard x:Name="tastieraInSinistra">
<DoubleAnimation Storyboard.TargetName="tastiera" Storyboard.TargetProperty="Opacity"
From="0.0" To="1.0" Duration="0:0:0.3"/>
<DoubleAnimation Storyboard.TargetName="SlideIn" Storyboard.TargetProperty="X"
From="-750" To="0" Duration="0:0:0.4"/>
</Storyboard>
<Storyboard x:Name="tastieraOutDestra">
<DoubleAnimation Storyboard.TargetName="tastiera" Storyboard.TargetProperty="Opacity"
From="1.0" To="0.0" Duration="0:0:0.3"/>
<DoubleAnimation Storyboard.TargetName="SlideIn" Storyboard.TargetProperty="X"
From="0" To="750" Duration="0:0:0.4"/>
</Storyboard>
<Storyboard x:Name="tastieraOutSinistra">
<DoubleAnimation Storyboard.TargetName="tastiera" Storyboard.TargetProperty="Opacity"
From="1.0" To="0.0" Duration="0:0:0.3"/>
<DoubleAnimation Storyboard.TargetName="SlideIn" Storyboard.TargetProperty="X"
From="0" To="-750" Duration="0:0:0.4"/>
</Storyboard>
</Page.Resources>
我在pivot.SelectionChanged方法中控制这些Storyboard,并在主页面的网格中添加了所有内容。唯一的缺点是现在我的主页面xaml文件变得有点拥挤,因为我在一个页面中拥有所有UI,但它工作正常:D 谢谢!