Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何整体更改C#文本框行为?_C#_Wpf - Fatal编程技术网

如何整体更改C#文本框行为?

如何整体更改C#文本框行为?,c#,wpf,C#,Wpf,我们的应用程序有许多文本框,我们会在适当的时候禁用它们。(我们将IsEnabled属性设置为false)。我们的客户现在希望文本框的内容不可更改,但可以复制。我们可以通过将IsReadOnly设置为true和IsEnabled设置为true来实现这一点 我真的不想去应用程序中的每一个地方,在那里文本框改变状态,并用这些设置来摆弄。如何将更改本地化,以便不需要进行大量编辑?基本上,当要设置的值为false时,我想做一些几乎等同于重新定义IsEnabled的set部分的事情。(顺便说一句,我们的客户

我们的应用程序有许多文本框,我们会在适当的时候禁用它们。(我们将
IsEnabled
属性设置为
false
)。我们的客户现在希望文本框的内容不可更改,但可以复制。我们可以通过将
IsReadOnly
设置为
true
IsEnabled
设置为
true
来实现这一点


我真的不想去应用程序中的每一个地方,在那里文本框改变状态,并用这些设置来摆弄。如何将更改本地化,以便不需要进行大量编辑?基本上,当要设置的值为
false
时,我想做一些几乎等同于重新定义
IsEnabled
的set部分的事情。(顺便说一句,我们的客户还希望我们做一些其他相关的更改,例如在“禁用”文本框时将文本框的背景颜色设置为非默认颜色。)

一种方法是创建一个文本框的子类,允许您进行这些类型的更改。但是,这需要您更改应用程序以替换所有出现的
我不太理解您的问题,但我认为创建一个后台工作程序来检查是否(MyTextBox.Enabled==false)
如果文本框已启用/禁用。

您应该使用WPF样式。如果您获得文本框的控制模板,您只需将IsDisabled部分中的操作切换为IsReadonly。如果不设置x:Key并保留TargetType=TextBox,这将影响整个应用程序。您也可以在需要此行为的模块附近执行此操作。您提到的那些属性当前是否未在代码隐藏中设置?@TYY-听起来控制模板是一种选择。作为C#和WPF的新手,我不知道他们。现在,我只需要弄清楚如何正确使用它们。干杯
<myControl:MyTextBox....