15

在此处输入图像描述

我正在使用 C# + XAML 开发 Windows 应用商店应用程序。当我添加一个属性TextWrapping设置为NoWrap的 TextBox 时,当它获得焦点时,TextBox 的末尾会出现一个“X”。

所以,我需要删除这个“X”并且 TextBox 不能换行。

4

6 回答 6

11

正如每个人所说,除非您有充分的理由这样做,否则您真的不应该删除“X”。

要删除 X,而不是将 TextWrapping 设置为“NoWrap”,您必须将其设置为 TextWrapping="Wrap"

于 2013-02-27T01:48:06.233 回答
6

X 是一种辅助功能。它使清除触摸设备上的框变得更容易,因为选择所有文本并点击删除是艰巨的并且需要多个步骤。

所以,除非你有非常非常重要的理由,否则请不要禁用它。没有禁用“X”的属性,产品团队也不打算禁用它。但是,出于教育目的,我将展示您可以通过更改Style来禁用它。

在 Expression Blend 中,右键单击文本框并选择Edit Template -> Edit a Copy。为您的模板命名,如“NoXTextBox”,并确保将其保存在应用程序级别(否则您将只能在当前页面上使用它)。

然后,Blend 将切换到您正在编辑 TextBox 而不是页面的视觉外观的模式。在Objects and Timeline面板中,您应该会看到一个名为DeleteButton的元素。您可以从模板中删除该按钮并保存您的工作。单击“对象和时间轴”面板顶部的按钮,该按钮看起来像一条带有向上箭头的水平线(当您将鼠标悬停在此按钮上时,它将显示“将范围返回到 [页面]”)。现在您回到编辑页面而不是编辑文本框。

要制作更多这样的文本框,您可以复制并粘贴它,或者在样式分支下的混合工具箱中,您将看到您的自定义“NoXTextBox”。

同样,请不要禁用此功能,除非您有充分的理由这样做。老实说,我想不出这样做的充分理由,因为您正在破坏用户在 Windows 应用商店应用程序中所期望的功能。我主要想回答您的问题,以便您了解如何修改内置控件。

开发支持、设计支持和更多的好处:http: //bit.ly/winappsupport

于 2013-02-26T18:49:24.903 回答
6

正如您从本文档中看到的那样,它很好地解释了该功能。正如您在使用 Javascript、Html 或 Css 时所看到的,您可以通过非常简洁的方式删除该字段。因为您可以简单地使用级联样式表禁用它。

它显示的图像。 编辑。

现在在样式表中,您实际上可以很容易地改变它:

input[type=text]::-ms-clear
{
            border: 2px solid orange
}

大多数按钮都非常易于使用,可在您的应用程序中实现一致的设计。但这并不能回答您的问题,您如何使用 C#/XAML 禁用它?

在文本框组件内部,您会注意到指示视觉状态和可见性的代码。如果您注释掉那段代码,它将禁用 X。这里有一个示例:

如上所述,它是一个非常漂亮和有用的工具。尤其是在触摸屏设备上;它不仅符合微软的统一,而且还使 UI 更干净,因为您可以通过简单的方法删除该字段中的项目。

我敦促您不要删除它,希望这可以为您解释一下这个问题。

于 2013-02-26T19:05:09.427 回答
0

编辑控件模板并删除模板中的 DeleteButton 及其引用。

于 2014-12-03T09:48:42.170 回答
0

这使得 X 消失并且在输入过程中也停止了文本的偏移。

input[type=text]::-ms-clear
{
  visibility: collapse;
}
于 2018-10-30T19:21:09.587 回答
0

对我来说,解决方案是设置 IsReadOnly="True" 的属性

于 2019-03-19T20:16:36.413 回答