删除TextBox末尾的“X”按钮

时间:2013-02-26 18:18:00

标签: c# xaml windows-8 windows-runtime windows-store-apps

enter image description here

我正在使用C#+ XAML开发Windows应用商店应用。当我添加一个属性TextWrapping设置为NoWrap的TextBox时,TextBox结束时会出现“X”。

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

谢谢!

6 个答案:

答案 0 :(得分:7)

正如大家所说,你真的不应该删除“X”,除非你有充分的理由这样做。

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

答案 1 :(得分:5)

X作为辅助功能。它可以更轻松地清除触摸设备上的框,因为选择所有文本并点击删除是非常艰巨的,需要多个步骤。

所以,请不要禁用此功能,除非您有非常重要的理由这样做。没有属性可以禁用“X”,产品团队也不打算禁用它。但是,出于教育目的,我将通过更改样式来显示您可以禁用它。

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

然后,

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

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

同样,请不要禁用此功能,除非您有充分的理由这样做。老实说,我不能想到这样做的一个很好的理由,因为你打破了Windows应用程序用户期望的功能。我主要想回答你的问题,这样你就可以了解如何修改内置控件。

开发人员的支持,设计支持和更加出色的善意:http://bit.ly/winappsupport

答案 2 :(得分:5)

正如您从本文档中看到的那样,它解释了该功能well。正如您在使用Javascript,Html或Css时所看到的那样,您可以通过非常快捷的方式删除该字段。您只需使用级联样式表即可将其禁用。

Image it displays. To Edit.

现在,在样式表中你可以很容易地改变它:

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

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

在Textbox组件的内部,您会注意到指示视觉状态和可见性的代码。如果您注释掉该部分代码,它将禁用X.示例here

如上所述,它是一个非常漂亮和有用的工具。特别是在触摸屏设备上;它不仅符合微软统一,而且还使UI更清晰,因为你有一个简单的方法来删除该字段中的项目。

我建议你不要删除它,希望这能为你解释一下这个问题。

答案 3 :(得分:0)

编辑控件模板并删除模板中的DeleteButton及其参考。

答案 4 :(得分:0)

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

input[type=text]::-ms-clear
{
  visibility: collapse;
}

答案 5 :(得分:0)

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