gpt4 book ai didi

xaml - 出现 SIP 键盘时 Windows Phone 项目滚动问题

转载 作者:行者123 更新时间:2023-12-04 08:52:34 26 4
gpt4 key购买 nike

在制作一个简单的聊天应用程序时,我面临以下代码的两个问题。
该代码在页面顶部显示了一个文本块,在底部显示了两个文本框堆栈。加上一个列表框,它将自动高度以填充剩余的间隙。

<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>
  • 当我单击顶部的文本框之一时,SIP 键盘变得可见并且页面中的所有内容都被向上推。这里的主要问题是顶部文本块消失并隐藏在顶部。如何在查看 SIP 键盘时将其保持在顶部而不移动?
  • 当最底部的文本框获得焦点时,会出现 SIP 键盘并将所有内容向上推。在这种情况下,键盘将适合并粘在该文本框上。但是,当另一个文本框获得焦点时,键盘会在它们之间产生间隙。当最底部的键盘被聚焦时,如何使键盘表现得像它一样?
  • 最佳答案

    当键盘弹起和弹开时,出现 TranslateTransformPhoneApplicationFrame 上运行,上下平移整个屏幕。

    基于 this article ,你应该能够得到翻译的值(value)。正如您可以观察到的动画移动 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
    }

    选项 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;
    }

    很抱歉,这些选项都不能神奇地解决问题,但它可能会帮助您编写最适合您的应用程序的代码。

    如果您从中找到更好的解决方案,请将其发布为答案。

    关于xaml - 出现 SIP 键盘时 Windows Phone 项目滚动问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17565349/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com