PreventingRead-OnlyTextBoxesfromDimminginSilverlight在Silverlight中,如何使用IsReadOnly="True"创建一个不会变灰的TextBox。我的应用程序的灰色效果看起来很糟糕,我想禁用它,或更改它的外观/颜色。Silverlight2中有几个选项,最简单的是使用TextBlock,因为它是只读的。如果你需要一个TextBox那么你需要做的就是给它一个不同于灰色效果的样式。为此,请打开混音。右键单击TextBox并选择EditControl(Template)->EditCopy...根据需要调用新样式。然后,您需要编辑此新样式并删除名为“ReadOnlyVisualElement”的边框,并删除更改该边框不透明度属性的故事板。希望这可以帮助。添加样式XAMLVisibleVisibleTruetrue我会得到Blend的预览,手动编写上面的代码将是很多不必要的工作。在xaml中似乎没有任何效果(像往常一样),所以我想出的最好的解决方案就是自己创建一个没有IsReadOnly属性的文本框。publicclassReadOnlyTextBox:TextBox{protectedoverridevoidOnKeyDown(KeyEventArgse){e.Handled=true;base.OnKeyDown(e);}}可选(出于某种原因,即使缺少Silverlight4),您可以稍微缩短Graeme的回答:您甚至可以删除禁用状态。这是@Struan答案的增强版。如果您想要一个只读文本框,我假设您想要允许全选和复制。您将需要处理按键,例如Ctrl+A和Ctrl+C免责声明:这不是一套完整的键-您可能需要添加更多,但这至少可以重现。publicclassReadOnlyTextBox:TextBox{protectedoverridevoidOnKeyDown(KeyEventArgse){if(e.Key==Key.Left||e.Key==Key.Right||e.Key==Key.Up||e.Key==Key.Down){base.OnKeyDown(e);返回;}if((Keyboard.Modifiers&ModifierKeys.Control)==ModifierKeys.Control||(Keyboard.Modifiers&ModifierKeys.Apple)==ModifierKeys.Apple){if(e.Key==Key.A||e.Key==Key.C){//允许全选和复制!base.OnKeyDown(e);返回;}}e.Handled=true;根据。OnKeyDown(e);这是我用来向用户指示该项目是可选的,但比典型的文本框小的简单样式。我发现@Simon_Weaver的解决方案最容易实现。我所做的唯一更改是检查Key.Tab和左/右/上/下,以便我可以跳出该字段。我创建了ReadOnlyTextBox类并复制了上面的代码。然后我添加了对Key.Tab的检查并进行了编译。接下来,我将我的Xaml标记更改为(删除IsEnabled引用并添加背景颜色)。它的外观和工作方式完全符合我的预期。谢谢西蒙。我想减少裸样式,并使用silverlight4.0进行测试:这几乎是一个作弊,就像说:嘿silverligh,这个文本框是一个文本块!您最终应该向TextBlock标记添加一些内容,以更好地反映其他TextBox属性。另一个更优雅的解决方案是简单地将TextBox更改为Button,直到按钮的定义/行为/外观发生变化。将“Text”属性更改为“Content”属性以设置显示的文本,删除“IsReadOnly”设置,我相信你会得到你想要的(一个类似于文本框的平面控件,支持文本和所有边框,背景,TextBox的Foreground属性[变灰],不改变不透明度和定义新样式的麻烦)。当用户尝试与此控件交互时,它的功能将在单击事件上发生变化,但如果没有与按钮关联的事件处理程序,它不会对您的界面产生任何影响。事实上,我认为默认的按钮行为让效果看起来有点“酷”。以上就是C#学习教程的全部内容:在Silverlight中防止只读文本框变灰。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
