WP7 中的可滚动文本框(Skype 和 Facebook)

2024-04-14

基本上,我正在开发一个记笔记应用程序,用户可以随意输入(有点像WP7 中的可滚动文本框 https://stackoverflow.com/questions/5576691/scrollable-textbox-in-wp7)。我将 TextBox 放入 ScrollViewer 中,一切都很好;当 TextBox 获得焦点时,我禁用 ScrollViewer,因此它会在用户键入时自动滚动。

我的问题是,我希望用户能够在编辑注释时滚动,就像他能够在阅读注释时滚动一样。我认为做到这一点的唯一方法是按住直到出现超大插入符号,然后移动它,但我发现,事实上,第三方应用程序支持这种类型的滚动。

我想要实现的是类似于手机上的Word/OneNote,用户可以在编辑文档时轻松滚动(证明它)。在 Skype 和 Facebook 应用程序中也可以看到同样的效果,在编写消息时,您可以滚动它以查看更多内容。

我想知道这是否是一个自定义控件,或者布局是否是以特定方式设计的,因为 ScrollViewer 内的 TextBox 根本不起作用。

我将不胜感激任何帮助。提前致谢。


根据 Ku6opr 给出的答案,我调整了代码,使其可以在我的情况下运行。现在,TextBox 具有正常行为,但可以滚动,并且 RootFrame 不会自动上升。

XAML:

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
    <ScrollViewer x:Name="InputScrollViewer">
        <TextBox x:Name="MessageText" TextWrapping="Wrap" Text="" AcceptsReturn="True" TextChanged="inputText_TextChanged" GotFocus="MessageText_GotFocus" Padding="0,0,0,400" Tap="MessageText_Tap" />
    </ScrollViewer>
</Grid>

C#:

public partial class MainPage : PhoneApplicationPage
{
    double InputHeight = 0.0;

    // Constructor
    public MainPage()
    {
        InitializeComponent();
    }

    private void MessageText_GotFocus(object sender, System.Windows.RoutedEventArgs e)
    {
        (App.Current as App).RootFrame.RenderTransform = new CompositeTransform();
    }

    private void inputText_TextChanged(object sender, System.Windows.Controls.TextChangedEventArgs e)
    {
        Dispatcher.BeginInvoke(() =>
        {
            double CurrentInputHeight = MessageText.ActualHeight;

            if (CurrentInputHeight > InputHeight)
            {
                InputScrollViewer.ScrollToVerticalOffset(InputScrollViewer.VerticalOffset + CurrentInputHeight - InputHeight);
            }

            InputHeight = CurrentInputHeight;
        });
    }

    public void MessageText_Tap(object sender, GestureEventArgs e)
    {
        InputScrollViewer.ScrollToVerticalOffset(e.GetPosition(MessageText).Y - 80);
    }
}

Tap 事件处理程序检测点击的垂直位置,并滚动 ScrollViewer,以便当 TextBox 获得焦点时可以看到插入符号。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WP7 中的可滚动文本框(Skype 和 Facebook) 的相关文章

  • 如何使用 C# 中的参数将用户重定向到 paypal

    如果我有像下面这样的简单表格 我可以用它来将用户重定向到 PayPal 以完成付款
  • 通过 CMIS (dotCMIS) 连接到 SP2010:异常未经授权

    我正在使用 dotCMIS 并且想要简单连接到我的 SP2010 服务器 我尝试用 C 来做到这一点 如下所示http chemistry apache org dotnet getting started with dotcmis htm
  • “构建”构建我的项目,“构建解决方案”则不构建

    我刚刚开始使用VS2010 我有一个较大的解决方案 已从 VS2008 成功迁移 我已将一个名为 Test 的控制台应用程序项目添加到解决方案中 选择构建 gt 构建解决方案不编译新项目 选择构建 gt 构建测试确实构建了项目 在失败的情况
  • WCF RIA 服务 - 加载多个实体

    我正在寻找一种模式来解决以下问题 我认为这很常见 我正在使用 WCF RIA 服务在初始加载时将多个实体返回给客户端 我希望两个实体异步加载 以免锁定 UI 并且我想利用 RIA 服务来执行此操作 我的解决方案如下 似乎有效 这种方法会遇到
  • 按成员序列化

    我已经实现了template
  • OleDbDataAdapter 未填充所有行

    嘿 我正在使用 DataAdapter 读取 Excel 文件并用该数据填充数据表 这是我的查询和连接字符串 private string Query SELECT FROM Sheet1 private string ConnectStr
  • 堆栈溢出:堆栈空间中重复的临时分配?

    struct MemBlock char mem 1024 MemBlock operator const MemBlock b const return MemBlock global void foo int step 0 if ste
  • C# 中通过 Process.Kill() 终止的进程的退出代码

    如果在我的 C 应用程序中 我正在创建一个可以正常终止或开始行为异常的子进程 在这种情况下 我通过调用 Process Kill 来终止它 但是 我想知道该进程是否已退出通常情况下 我知道我可以获得终止进程的错误代码 但是正常的退出代码是什
  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • WCF 中 SOAP 消息的数字签名

    我在 4 0 中有一个 WCF 服务 我需要向 SOAP 响应添加数字签名 我不太确定实际上应该如何完成 我相信响应应该类似于下面的链接中显示的内容 https spaces internet2 edu display ISWG Signe
  • SolrNet连接说明

    为什么 SolrNet 连接的容器保持静态 这是一个非常大的错误 因为当我们在应用程序中向应用程序发送异步请求时 SolrNet 会表现异常 在 SolrNet 中如何避免这个问题 class P static void M string
  • 转发声明和包含

    在使用库时 无论是我自己的还是外部的 都有很多带有前向声明的类 根据情况 相同的类也包含在内 当我使用某个类时 我需要知道该类使用的某些对象是前向声明的还是 include d 原因是我想知道是否应该包含两个标题还是只包含一个标题 现在我知
  • 控件的命名约定[重复]

    这个问题在这里已经有答案了 Microsoft 在其网站上提供了命名指南 here http msdn microsoft com en us library xzf533w0 VS 71 aspx 我还有 框架设计指南 一书 我找不到有关
  • 在移动设备上滚动

    这个问题更多的是一个建议研究 我确实希望它对其他人有帮助 并且它不会关闭 因为我不太确定在哪里寻求有关此事的建议 在过去的 6 个月里 我一直在进行移动开发 我有机会处理各种设备上的各种情况和错误 最麻烦的是滚动问题 当涉及到在网站的多个区
  • Windows 窗体:如果文本太长,请添加新行到标签

    我正在使用 C 有时 从网络服务返回的文本 我在标签中显示 太长 并且会在表单边缘被截断 如果标签不适合表单 是否有一种简单的方法可以在标签中添加换行符 Thanks 如果您将标签设置为autosize 它会随着您输入的任何文本自动增长 为
  • 对现有视频添加水印

    我正在寻找一种用 C 在视频上加水印的方法 就像在上面写文字一样 图片或文字标签 我该怎么做 谢谢 您可以使用 Nreco 视频转换器 代码看起来像 NReco VideoConverter FFMpegConverter wrap new
  • WPF/C# 将自定义对象列表数据绑定到列表框?

    我在将自定义对象列表的数据绑定到ListBox in WPF 这是自定义对象 public class FileItem public string Name get set public string Path get set 这是列表
  • 混合 ExecutionContext.SuppressFlow 和任务时 AsyncLocal.Value 出现意外值

    在应用程序中 由于 AsyncLocal 的错误 意外值 我遇到了奇怪的行为 尽管我抑制了执行上下文的流程 但 AsyncLocal Value 属性有时不会在新生成的任务的执行范围内重置 下面我创建了一个最小的可重现示例来演示该问题 pr
  • Windows 和 Linux 上的线程

    我在互联网上看到过在 Windows 上使用 C 制作多线程应用程序的教程 以及在 Linux 上执行相同操作的其他教程 但不能同时用于两者 是否存在即使在 Linux 或 Windows 上编译也能工作的函数 您需要使用一个包含两者的实现
  • 如何防止用户控件表单在 C# 中处理键盘输入(箭头键)

    我的用户控件包含其他可以选择的控件 我想实现使用箭头键导航子控件的方法 问题是家长控制拦截箭头键并使用它来滚动其视图什么是我想避免的事情 我想自己解决控制内容的导航问题 我如何控制由箭头键引起的标准行为 提前致谢 MTH 这通常是通过重写

随机推荐

  • 删除外键约束

    如果我在创建过程中没有命名外键 如何删除它 create table abc id number 10 foreign key id references tab roll even alter table abc drop foreign
  • [__NSCFTimer copyWithZone:]:无法识别的选择器发送到实例

    var searchDelayer NSTimer func searchBar searchBar UISearchBar textDidChange searchText String searchDelayer invalidate
  • 如何组合多个可为空的 NSPredicate?

    例如 类似的东西 var finalPredicate NSPredicate format if screen nil screenPredicate NSPredicate format screen screen finalPredi
  • 使用jquery mobile点击而不是点击

    我正在制作一个需要在移动设备和非移动设备上运行的网络应用程序 在我的应用程序中 我有几个图标 用户可以单击这些图标 以便使用 Websocket 向服务器发送消息 我的代码看起来像这样 button container on tap sen
  • 像素转MM方程?

    有没有可靠的公式可以计算出 MM 的像素大小 或者说这不可能跨设备 我们正在使用一个定制系统 该系统可以向许多具有不同屏幕尺寸的设备提供内容 它可以检测 MM 中的屏幕宽度 但我们希望将其准确地转换为像素大小 以便使用简单的 jquery
  • 在 Rstudio 上浏览 R 代码的高效递归方式?

    我正在使用 RStudio 我开始觉得有必要通过包代码来更深入地理解或破解某些功能 当我尝试使用导航时使用 Ctrl 单击鼠标 http www rstudio com ide docs using navigation对于包内定义的函数
  • 为什么使用散列来为大量文件创建路径名?

    我注意到在许多情况下 应用程序或数据库使用 has 来存储文件 blob 集合来确定路径和文件名 我相信预期的结果是路径永远不会太深 或者文件夹太满 文件夹中的文件 或文件夹 太多 导致访问速度变慢 编辑 示例通常是数字图书馆或存储库 尽管
  • 这是一个有效的 java 包名称吗? [复制]

    这个问题在这里已经有答案了 可能的重复 您在 Java 中的个人 爱好项目中使用什么包命名约定 https stackoverflow com questions 292169 what package naming convention
  • 如何在react-bootstrap中将导航栏居中

    我希望这是一个简单的问题 我看到有些人问了关于引导程序的类似问题 我无法将这些答案之一转化为适合我的解决方案 而且我认为无论如何可能有一个更简单的反应引导答案 代码示例在这里 https codesandbox io s yq5jvl9lz
  • 在单个 SQL 语句中使用 LIKE 和 IN 以及子查询

    我正在编写一个查询 尝试在子查询 CTE 中搜索通配符子字符串 并将此逻辑嵌套在我的 CASE 语句中 例如 SELECT CASE WHEN text IN SELECT Column1 FROM Table THEN I am in C
  • 将颜色对象“舍入”到最接近的颜色常量的最佳方法是什么?

    我将检索像素的确切颜色 并希望将该确切颜色与常量相关联 例如Color blue 有没有一种简单的方法可以 舍入 到最接近的颜色常数 此外 有没有办法定义自己的颜色常量 基本方法是通过简单地将样品与每个样品进行比较来找到与样品最接近的标准颜
  • 递归调用不在尾部位置

    假设我定义了以下函数 final def myFunc T list List T List T list match case h t gt h myFunc t case gt Nil 当我添加 tailrec 注释时 编译器给出以下错
  • /usr/local/bin:/usr/bin: 到 $PATH 的末尾而不是顶部

    我正在尝试使用 MSVC 链接器进行 ICU 代码 但是 启动 Cygwin 会将 usr local bin 和 usr bin 放在路径前面 导致 link exe 始终调用 Cygwin 版本 而不是 MSVC 版本 我该如何解决这个
  • 通过 Jquery Ajax 调用创建 TinyURL

    我已经浏览过类似的问题 但似乎找不到一个解决看似简单的调用的问题 function TweetThis url ajax url http tinyurl com api create php url url cache false suc
  • 构建错误 Ionic Android:构建失败并出现异常

    我尝试为 Android 构建一个离子应用程序 但出现此错误 What went wrong A problem occurred configuring root project android gt Could not resolve
  • 如何在训练/验证/测试中调整 pandas get_dummies?

    我有 3 组数据 训练 验证和测试 当我运行时 training x pd get dummies training x columns a b c 它给了我一定数量的功能 但是当我在验证数据上运行它时 它给了我一个不同的数字和相同的测试数
  • 如何打印数组的所有值? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个数组 print r 不会显示原始文本 如何打印数组中的所有值 例如饼图 有很多方法可以做到 foreach array as
  • 将channel_priority设置为“strict”是否会影响所有Conda环境?

    我使用 R 创建了一个 Conda 环境the 康达锻造公司频道说明 https conda forge org docs user introduction html how can i install packages from con
  • 如何在 IntelliJ Spring Boot 项目中添加环境变量

    我正在尝试在我的 spring boot 中添加环境变量application properties文件 我知道如何正常添加它非 spring boot 项目 但我找不到添加环境变量的字段 这就是我看到的 这是我的 application
  • WP7 中的可滚动文本框(Skype 和 Facebook)

    基本上 我正在开发一个记笔记应用程序 用户可以随意输入 有点像WP7 中的可滚动文本框 https stackoverflow com questions 5576691 scrollable textbox in wp7 我将 TextB