删除TextBox末尾的“X”按钮

问题描述 投票:12回答:6

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

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

c# xaml windows-8 windows-runtime windows-store-apps
6个回答
5
投票

正如您从本文档中看到的那样,它解释了功能相当well。正如您在使用Javascript,Html或Css时所看到的那样,您可以使用非常简洁的方法来删除该字段。您可以使用Cascading Stylesheets简单地禁用它。

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

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

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

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

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

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


7
投票

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

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


6
投票

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

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

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

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

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

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

开发支持,设计支持以及更多令人敬畏的善良:http://bit.ly/winappsupport


0
投票

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


0
投票

这使得X消失并且还在输入期间停止文本的偏移。

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

0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.