Vin*_*ent 8 xaml windows-phone
当我正在制作一个简单的聊天应用程序时,我面临着以下代码的两个问题.代码在页面顶部显示一个文本块,在底部显示两个文本框堆栈.加上一个列表框,它将自动填充剩余的空隙.
<Grid x:Name="LayoutRoot" Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Rectangle Height="1" Fill="White" VerticalAlignment="Top"/>
<TextBlock Text="Hello World!" Grid.Row="0" FontSize="36"/>
<Listbox Grid.Row="1"/>
<TextBox Grid.Row="2"/>
<TextBox Grid.Row="3"/>
</Grid>
Run Code Online (Sandbox Code Playgroud)
当我单击其中一个顶部文本框时,SIP键盘变为可见,并且页面中的所有内容都被向上推.这里的主要问题是顶部文本块消失并隐藏在顶部.如何在查看SIP键盘时将其保持在最顶层而不移动?
当最底部的文本框具有焦点时,会出现SIP键盘并向上推送所有内容.在这种情况下,键盘将适合并粘贴到该文本框.但是,当其他文本框具有焦点时,键盘将在它们之间产生间隙.如何使键盘表现得像最底部的键盘一样?
当键盘弹出和取消弹出时, aTranslateTransform在 上运行PhoneApplicationFrame,上下平移整个屏幕。
根据这篇文章,您应该能够获得翻译的价值。正如您可以观察到的,动画将Y属性从零移动到特定的负值(基于您关注的控件)。
选项 1:我无法编写处理该值的下降方法,但您应该能够调整控件的大小以适合屏幕的左侧。
选项2.0(不好):您可以取消或删除此动画。键盘将位于屏幕顶部,没有任何移动。现在轮到您移动/调整控件大小以适应剩余空间。
public MainPage()
{
this.InitializeComponent();
PhoneApplicationFrame frame = (App.Current as App).RootFrame;
var group = (frame.RenderTransform as TransformGroup);
group.Children.RemoveAt(0); // remove translate transform
}
Run Code Online (Sandbox Code Playgroud)
选项 2.1:2.0 存在一个问题:删除转换将阻止您收到有关键盘的通知。当 Y 属性更改时,在页面的子页面上设置反向动画将“取消”原始翻译。
<Grid x:Name="LayoutRoot" Background="Transparent" VerticalAlignment="Stretch">
<Grid.RenderTransform>
<TransformGroup>
<TranslateTransform />
</TransformGroup>
</Grid.RenderTransform>
static void OnRootFrameTransformChanged(DependencyObject source, DependencyPropertyChangedEventArgs e)
{
// ... edit from the blog article ...
MainPage page = source as MainPage;
page.lb.Items.Add(newvalue);
var oppositeTransform = (TranslateTransform)((TransformGroup)page.RenderTransform).Children[0];
if (newvalue < 0.0)
{
page.IsSipVisibleGuess.IsChecked = true;
oppositeTransform.Y = -newvalue;
}
else if (newvalue == 0.0)
{
page.IsSipVisibleGuess.IsChecked = false;
oppositeTransform.Y = 0;
}
Run Code Online (Sandbox Code Playgroud)
很抱歉,这些选项都不能神奇地解决问题,但它可以帮助您编写最适合您的应用程序的代码。
如果您从中找到更好的解决方案,请将其作为答案发布。
| 归档时间: |
|
| 查看次数: |
821 次 |
| 最近记录: |