如何强制文本框显示正在输入的内容?

2024-04-02

在我的 UWP 应用程序中,单击按钮 (btnCre8NewMap) 时我会调用 ContentDialog。这是相关的 XAML:

<Button x:Name="btnCre8NewMap" Content="Create New Map" ToolTipService.ToolTip="Create a new map" Margin="140,16,50,0" VerticalAlignment="Top" Click="btnCre8NewMap_Click"/>
. . .
<ContentDialog x:Name="cntDlgCre8Map"
Title="Create a New Map"
PrimaryButtonText="Save"
CloseButtonText="Cancel"
DefaultButton="Primary">
    <StackPanel>
    <TextBlock Text="Map Name: "/>
    <TextBox x:Name="txtbxMapName"
        Width="300" HorizontalAlignment="Left"/>
    <TextBlock Text="Default Zoom Level: "/>
    <ComboBox x:Name="cmbxCre8MapZoomLevels"
        Width="100" HorizontalAlignment="Left"/>
    <TextBlock Text="Map Notes: "/>
    <TextBox x:Name="txtbxMapNotes"
        Width="300" Height="300" HorizontalAlignment="Left"/>
    </StackPanel>
</ContentDialog>

...这是隐藏代码中的按钮单击事件:

private async void btnCre8NewMap_Click(object sender, RoutedEventArgs e)
{
    try
    {
        string mapName = string.Empty;
        string mapNotes = string.Empty;
        int defaultZoomLevel = 1;
        ClearLocations();
        // Popul8 the cmbx
        for (int i = 1; i < 20; i++)
        {
            cmbxCre8MapZoomLevels.Items.Add(i.ToString());
        }
        ContentDialogResult result = await cntDlgCre8Map.ShowAsync();

        if (result == ContentDialogResult.Primary)
        {    
            mapName = txtbxMapName.Text;
            mapNotes = txtbxMapNotes.Text;
            defaultZoomLevel = cmbxCre8MapZoomLevels.SelectedIndex + 1;
            InsertMapRecord(mapName, mapNotes, preferredZoomLevel);
        }
        // else do nothing (don't save)
    }
    catch (Exception ex)
    {
        MessageDialog exceptionMsgDlg = new MessageDialog(ex.Message, "btnCre8NewMap_Click");
        await exceptionMsgDlg.ShowAsync();
    }
}

这是当我单击按钮,在 txtbxMapName 中输入“bla”,然后在 txtbxMapNotes 中输入一堆文本时看到的内容:

问题是,虽然 txtbxMapName 允许我输入一个值(屏幕截图中的“bla”),但当我在其中输入文本时,txtbxMapNotes 没有显示任何内容(请注意中间的“x”)。一旦我退出 txtbxMapNotes 控件,我输入的内容最终会显示,但是......?!?

我需要做什么才能使 txtbxMapNotes 在输入时显示正在输入的内容(而不是在离开控件后)?


你可以使用data-binding当您在顶部文本框中键入内容时,此处显示下方文本框中的文本。

像这样更改 ContentDialog Xaml:

  <StackPanel>
            <TextBlock Text="Map Name: "/>
            <TextBox x:Name="txtbxMapName" Width="300" HorizontalAlignment="Left" Text="{Binding InputString,Mode= TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
            <TextBlock Text="Default Zoom Level: "/>
            <ComboBox x:Name="cmbxCre8MapZoomLevels" Width="100" HorizontalAlignment="Left"/>
            <TextBlock Text="Map Notes: "/>
            <TextBox x:Name="txtbxMapNotes" Width="300" Height="300" HorizontalAlignment="Left" Text="{Binding InputString, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" />
        </StackPanel>

在后面的代码中,创建一个名为 ViewModel 的新类:

 public class ViewModel: INotifyPropertyChanged 
{
    private string _inputString;

    public string InputString
    {
        get { return _inputString; }
        set
        {
            _inputString = value;
            RaisePropertyChanged("InputString");
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    protected void RaisePropertyChanged(string name)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(name));
        }
    }
}

在隐藏代码中:

 public ViewModel viewModel { get; set; }
    public MainPage()
    {
        this.InitializeComponent();

        viewModel = new ViewModel();

        this.DataContext = viewModel;
    }

我用MainPage来测试。您可以将代码添加到应用程序的真实页面中。

您可能会对以下内容感到困惑INotifyPropertyChanged interfaceBinding markup extension。 请参阅以下文档以获取有关数据绑定的更多信息:数据绑定概述 https://learn.microsoft.com/en-us/windows/uwp/data-binding/data-binding-quickstart and 数据深度绑定 https://learn.microsoft.com/en-us/windows/uwp/data-binding/data-binding-in-depth.

Update:

将 TextWrapping="Wrap" 添加到 TextBox 以使清除所有按钮不可见。 像这样:

<TextBox x:Name="txtbxMapNotes" Width="300" Height="300" TextWrapping="Wrap" HorizontalAlignment="Left" Text="{Binding InputString, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" />
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何强制文本框显示正在输入的内容? 的相关文章

  • (UWP) 将网格另存为 png

    我正在开发一个 UWP 应用程序 它有一个带有子项 图像和文本块的网格 我有两件事想要实现并需要帮助 如何使用预定义名称将 Grid 元素及其子内容作为图像 最好是 PNG 保存在本地文件夹中 如何检索此保存的图像 然后将其作为附件与其他兼
  • 在winRT MessageDialog中添加文本框

    我正在 Windows 8 商店应用程序中工作 我试图弹出一个对话框 让用户在文本框中输入信息 怎么做 The InputDialog http winrtxamltoolkit codeplex com SourceControl cha
  • 使用 javascript/jquery 触发文件上传对话框

    而不是使用
  • 如何在未聚焦时保持 WPF 文本框选择?

    我想在 WPF TextBox 中显示一个选择 即使它没有焦点 我怎样才能做到这一点 我已将此解决方案用于 RichTextBox 但我认为它也适用于标准文本框 基本上 您需要处理 LostFocus 事件并将其标记为已处理 protect
  • 是否可以通过数据绑定项来控制单个列表视图项的选定、指针悬停和按下状态

    我目前正在尝试设计一个ListView因此其中的每个项目都可以控制自己的背景颜色 PointerOver Pressed 和 Selected 状态 我发现我可以设置背景ListViewItem to Transparent并让DataTe
  • 我需要在 asp.net 中屏蔽文本框

    该文本框中只能包含数字 条目必须在 100 到 500 之间 文本框需要包含 3 位小数 我不希望在将值插入数据库时 出现任何错误 我需要使用 jQuery 或 ASP NET 验证控件吗 如果 jQuery 有用 那么我会使用哪个插件 或
  • Windows Phone 8.1 尺寸问题

    我在为 Windows Phone 开发应用程序时无法理解尺寸 我知道有3个决心 WVGA 480 800 15 9 WXGA 768 1280 15 9 1 6x scale 720p 720 1280 16 9 1 5x scale 8
  • SSRS - 条件文本格式(使用 Switch 的表达式)

    我将首先说明这些表达式在报告中确实有效 问题是他们没有一起工作 我目前有一个基于两列值格式化的列标题 根据 Column1 的值使用斜体和下划线 基于 Column2 值的粗体和特定颜色 我通过在文本属性中使用 Switch 表达式来完成此
  • 循环遍历空文本框,直到文本框有数据

    我确信对此有一个简单的解决方案 但我没有想到 我有一个带有三个文本框的表单 在运行主代码之前 我想确保每个文本框中都有数据 我已将 hasData 初始化为变量 该变量将决定代码是否可以继续前进 我在 Do While 循环中评估 hasD
  • 如何等待WebViewBrush.Redraw()完成(UWP打印)?

    我有一个基本的 UWP 应用程序 带有嵌入式 WebView 可呈现相当大的 HTML 文档 最多 500 个字母大小的打印页面 我想添加对打印该 HTML 文档的支持 这是我的方法 为了支持分页 我使用 div style height
  • 处理 TextBox 中的 ENTER 按钮,ASP.NET

    我在 ASP NET 中遇到以下问题 有一个表单 其中包含一个文本框和旁边的一个按钮 用户在填写该框后应该按下该按钮 示例http www burnthespam info http www burnthespam info 单击 选择您的
  • textbox1.Text 无法从另一个表单复制 textbox2.Text 值[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 下面是我的代码 private void btnCptKb5 Click object sender EventArgs e Form1 f
  • Android Web 视图中隐藏在键盘下方的文本框

    我创建了一个简单的 iPhone Android 应用程序 包含一个普通的 Web 视图 这个网络视图调用我的网站 在我的网站上有几种输入类型 文本或文本区域的表单 当它们位于页面底部时 我遇到了问题 1 在我的iPhone应用程序中 键盘
  • 将枚举类型绑定到文本框

    我将 textbox text 值绑定到枚举类型 我的枚举看起来像这样 public enum Type Active Selected ActiveAndSelected 我不想完成的是在文本框上显示 活动模式 而不是 活动 等等 可以这
  • XAML UWP 浮出控件定位

    I am implementing a Flyout in a UWP app as you can see on the image below I want the AutoSuggestBox in the Flyout to app
  • 如何在文本字段内设置用户名和密码的标签?

    我的网站有一个登录表单 该登录表单有两个文本字段 用户名和密码 目前 我将标签 用户名 密码 放置在文本字段之前 但现在我想删除这两个标签并想在文本字段内显示文本 用户名 密码 当用户关注这些文本字段时 文本应该被删除 用户可以输入他想要的
  • SaveState/LoadState 之后无法设置 MediaElement Source

    注意 所有代码都已被严重简化 Problem 暂停 恢复后未设置 MediaElement 源 设置源后 CurrentState 会快速更改为 Closed 我正在处理 MediaFailed 事件 它不会触发 我还在处理 MediaOp
  • Windows 8 应用程序调用为不同线程编组的接口的应用程序

    我正在使用 c XAML 开发 Windows 8 应用程序 除了这个事件处理程序之外 一切都正常工作 我在这一行收到以下错误 await RefreshUserInfoAsync 应用程序调用了为不同线程编组的接口 HRESULT 异常
  • 为 html5 输入类型渲染 asp.TextBox =“date”

    不知道以前有没有问过 也没找到 是否可以控制由 asp TextBox 呈现的输入文本的类型 我想把它改成
  • 将一个文本框的值分配给另一个文本框

    看过类似问题的答案 但对于我的一生 我无法弄清楚我做错了什么 我有两个文本框和一个按钮 当文本添加到第一个文本框并按下按钮时 我想将第一个文本框的值 文本应用到第二个文本框

随机推荐

  • Vim 显示:ImportError:没有名为 site 的模块。当我使用 Canopy1.1 时

    我在Windows Xp 32中安装了Canopy 1 1 express 并使用vim作为编辑器 当我打字时 python print hello 在vim命令行中显示 Importerror No module named site然后
  • Flutter Android SDK 版本 28 错误,但我使用的是 30

    当我创建一个新的 flutter 应用程序时 它启动 android sdk 版本 28 但我使用 android sdk 30 Flutter doctor 还显示了平台 android 30 build tools 30 0 2 当我尝
  • dll文件的描述

    您好 如何在 dll 文件中查找类的描述 在我的项目中 我在 imagealg dll 中使用 diff calss 告诉我如何找到那个的描述 plz 找到该类的描述的最佳位置是在文档中
  • Eclipse 自动建议并填写变量名称

    好的 所以我的问题是当我创建一个变量时 例如 Object o 当我输入 o 时 它会建议类似 object 的内容 没关系 但是当我按空格时 它会自动填充新名称 基本上我不想关闭自动完成 我只想禁用空格自动填充建议 甚至禁用变量命名建议也
  • 如何使用 C# 在 Excel 图表上添加多个系列

    我想添加一个如下图所示的图表 该图表有 3 个系列 黑色 红色 蓝色 以下是在图表上创建 一个 系列的代码块 Excel Workbook oWorkbook Excel Workbook oSheet Parent Excel Chart
  • 捕获最后一个 WM_SIZE

    当我调整窗口大小时 我想告诉程序的另一部分我的窗口大小已更改 我继续读下去MSDN http msdn microsoft com en us library ms632646 VS 85 aspx that WM 尺寸 留言WM SIZE
  • 将 less-plugin-glob 与 Webpack 结合使用

    我正在尝试将现有项目的构建系统从gulp to webpack 它当前有一个入口点 less 文件 可导入各种其他文件 如下所示 import bower components bootstrap less bootstrap less i
  • 即使在索引字段上,MongoDB 排序也非常慢

    今天我遇到了这个问题 我的 MongoDB 查询速度非常慢并且超时 我发布了这个问题 MongoDB 记录太多 https stackoverflow com questions 11701103 mongodb too many reco
  • iPhone 中的 jpg 图像和 2x 图像

    我正在开发 iphone 应用程序并定位iOS 4 0或稍后 我正在尝试将图像添加到 UIImageView 并且图像位于jpeg格式 这就是我到目前为止所做的 UIImageView bgImageView UIImageView all
  • Div 溢出滚动到底部:可能吗?

    如果我有一个div with overflow auto使其成为可滚动的div我加载它的信息会形成一个重要的滚动区域 有没有一种方法可以在我加载信息时 div显示底部结果 或者基本上滚动到底部 我见过 jQuery 解决方案 但这是在 HT
  • 如何让图片大小在滚动时平滑变化?

    我有带有大徽标的标题 我想在滚动超过 100px 后将其变小 这工作正常但不流畅 我怎样才能做到平滑 我的代码 function window scroll function if this scrollTop gt 100 header
  • AngularJS 登录表单与 ng-click 不起作用

    我在这个插件中写了一个基本的登录表单http plnkr co edit xQEN1ZNN5ZEw1CSwNw97 p preview http plnkr co edit xQEN1ZNN5ZEw1CSwNw97 p preview 单击
  • 如何在改造多部分请求中发送对象数组

    I want to send array objects with multipart data I tried many ways but it is not working My issue with the contributor p
  • 如何为Android Studio构建模板项目

    我使用 Android Studio 我必须创建许多始终包含三个模块的项目 应用程序 应用程序 图书馆 图书馆 壁纸 应用程序 我知道可以使用 ADT 来构建活动模板等 我找到了一些类似的教程this https android arsen
  • 在 C# 中使用 XSLT 将 RVML 转换为 SVG

    我有一个 C Web 应用程序 它使用以下命令生成 SVG 代码拉斐尔 JS http www raphaeljs com 然后我需要将其转换为 PNG 以实现用户之间的一般互操作性 请参阅我之前的问题在这里 https stackover
  • 如何从首选项屏幕返回到主要活动?

    我有一项主要活动和一项偏好活动 在我的第一个活动中 我调用菜单并通过调用startActivityForResult继续preferenceActivity case R id settings startActivityForResult
  • TCP 数据偶尔会以错误的顺序接收且不完整

    我用 Java 创建了 TCP 服务器应用程序 并用 C 创建了客户端应用程序 当我发送数据时 客户端有时会乱序接收数据 有时部分会完全丢失 基本上 我在服务器 java 中使用的代码如下 已删除 ServerSocket welcomeS
  • 将同步方法更改为异步方法

    我在谷歌上搜索了很多并阅读了不同的菜鸟教程 但我认为我不明白正确的做法是什么 基本上 现有的同步代码会在服务器启动并运行时执行某些操作 有时 很少见 服务器需要更长的时间才能启动 因此我想将其包装在一些重试逻辑中 我构建了一个完全愚蠢的控制
  • 单向数据库同步

    经常需要将一个数据库中的主表中的数据同步到其他数据库 通常位于其他服务器上 中的克隆表 例如 考虑这样一种情况 后端系统管理库存数据 并且库存数据最终必须推送到作为网站应用程序一部分的一个或多个数据库 后端系统中的源数据高度规范化 有数十个
  • 如何强制文本框显示正在输入的内容?

    在我的 UWP 应用程序中 单击按钮 btnCre8NewMap 时我会调用 ContentDialog 这是相关的 XAML