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) 的相关文章

  • WebClient.DownloadDataAsync 冻结了我的 UI

    我在 Form 构造函数中的 InitializeComponent 之后有以下代码 using WebClient client new WebClient client DownloadDataCompleted new Downloa
  • 元组在 VS2012 中如何工作?

    Visual Studio 2012 功能 tuples但不是可变参数模板 这是如何完成的 如何在不使用可变模板的情况下实现元组 简而言之 微软做了与之前在 NET 中实现类似元组的数据类型完全相同的事情 创建许多版本 每个版本都有固定数量
  • 是否可以从 C++ 应用程序调用 C# 应用程序?

    我是一名编程学生 现在我已经上了两门 C 课程 这个学期我将参加我的第一门 C 课程 出于好奇 是否可以从 C 应用程序调用 C 应用程序 如果是的话 是否还可以检查运行该程序的计算机是否具有 NET框架 我只是很好奇 我想如果可能的话 这
  • 我如何知道 C 程序的可执行文件是在前台还是后台运行?

    在我的 C 程序中 我想知道我的可执行文件是否像这样在前台运行 a out 或者像这样 a out 如果你是前台工作 getpgrp tcgetpgrp STDOUT FILENO or STDIN FILENO or STDERR FIL
  • 叮当错误?命名空间模板类的朋友

    以下代码在 clang 下无法编译 但在 gcc 和 VS 下可以编译 template
  • 异常堆栈跟踪不显示抛出异常的位置

    通常 当我抛出异常 捕获它并打印出堆栈跟踪时 我会看到抛出异常的调用 导致该异常的调用 导致该异常的调用that 依此类推回到整个程序的根 现在它只向我显示异常所在的调用caught 而不是它所在的地方thrown 我不明白是什么改变导致了
  • 在 ASP.NET MVC 中将模型从视图传递到控制器

    我正在 ASP NET MVC 中开发我的第一个应用程序 但遇到了一个我无法解决的问题 即使在阅读了整个互联网之后也是如此 因此 我有几个使用视图模型创建的视图 它们是报告 这些视图模型是根据用户选择标准填充的 我正在尝试构建一种接受模型并
  • C# 处理标准输入

    我目前正在尝试通过命令行断开与网络文件夹的连接 并使用以下代码 System Diagnostics Process process2 new System Diagnostics Process System Diagnostics Pr
  • 全局使用和 .NET Standard 2.0

    我最近意识到我可以使用 C 10 功能文件范围的命名空间在 NET Standard 2 0 项目中也可以通过设置
  • C++ 将联合强制转换为其成员类型之一

    以下对我来说似乎完全符合逻辑 但不是有效的 C 联合不能隐式转换为其成员类型之一 有人知道为什么不这样做的充分理由吗 union u int i char c function f int i int main u v v i 6 f v
  • 静态类与类的实例

    我有一个静态类 用于访问我的公共属性 整个应用程序的全局属性 和我在应用程序运行期间使用的方法 例如 我在静态类中设置了一些属性 并且在应用程序运行时我可以从属性中获取值 但我可以使用单例模式创建非静态类并以相同的方式使用它 问题 对于我的
  • 在 C++11 中移出 stdpriority_queue 的元素

    最小的工作示例 include
  • 用于连接 DataTable 上的动态列的动态 LINQ

    我目前遇到的情况不确定如何继续 我有两个从数据库填充的数据表 我还有一个可用的列名称列表 可用于将这两个数据表连接在一起 我希望编写一组 LINQ 查询 这些查询将 显示两个数据表中的行 内部联接 用于从一个数据表更新另一个数据表 显示一个
  • 如何使用递归查找数字中的最小元素 [C]

    好的 所以我正在准备我的 C 考试 当谈到递归时我有点卡住了我是大学一年级的学生 这对我来说似乎有点困难 练习要求在给定的数字中使用递归函数我需要找到最小的元素 例如 52873 是 2 程序需要打印 2 include
  • 时间:2019-03-17 标签:c++fstream并发访问

    如果从不同的进程 线程同时访问文件会发生什么 据我所知 没有锁定文件的标准方法 只有操作系统特定的功能 就我而言 文件将被经常读取而很少写入 现在如果A打开一个文件进行读取 ifstream 并开始读取块 和B打开相同的文件进行写入 ofs
  • C++ 到 C# 事件处理

    所以我有我的C WinForm 应用程序 我从中调用我的C CLI MFC dll图书馆 但也有一些events在我的 C 库上 甚至此事件也发生在该库的本机 非 CLI 部分 我需要从我的 C 应用程序调用一些代码 并获取一些有关此事件的
  • 浮点字节序?

    我正在为实时海上模拟器编写客户端和服务器 并且由于我必须通过套接字发送大量数据 因此我使用二进制数据来最大化可以发送的数据量 我已经了解整数字节顺序以及如何使用htonl and ntohl为了规避字节顺序问题 但我的应用程序与几乎所有模拟
  • printf或iostream如何指定点后的最大位数

    字符串采用什么格式printf or iomanip我应该使用 iostream 中的运算符以以下格式打印浮点数 125 0 gt 125 125 1 gt 125 1 125 12312 gt 125 12 1 12345 gt 1 12
  • 将 Swagger 与命名空间版本的 WebApi 结合使用

    我已经找到了如何使用基于名称空间的 WebAPI 版本这个班 https aspnet codeplex com SourceControl changeset view dd207952fa86 Samples WebApi Namesp
  • 将 char 绑定到枚举类型

    我有一段与此非常相似的代码 class someclass public enum Section START MID END vector section Full void ex for int i 0 i section

随机推荐

  • 删除外键约束

    如果我在创建过程中没有命名外键 如何删除它 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