我想为WPF搜索TextBox实现类似“Changing the Default Text in the Search Box”的内容。当文本框为空时,该文本框应该显示一些灰色的“Search ...”文本,然后当输入文本时它应该正常工作。链接的文章显示了如何在javascript中执行此操作。如何在WPF中开始这条路?到目前为止,我所拥有的最好主意是在主文件夹顶部的另一个文本框,当搜索文本框获得焦点或文本时,该文本框就不可见。如何为WPF中的搜索框实现默认文本?
回答
试试Kevin Moore的Bag-o-Tricks中的InfoTextBox示例。你可以从 http://work.j832.com/2008/01/real-update-to-bag-o-tricks.html
你可以改变文本框有灰色的文字,只要其空和一个变量,它会告诉你,是空的,所以,当你点击搜索就不会去搜索“搜索...”
或者你可以使用类似于你所说的东西,但不是上面的文本框,你可以在下面有文字。如果顶部有一个带有透明背景的文本框,并且底部有一个标签,当顶部文本框为空时应该可以解决问题。
和WPF一样,有很多方法可以实现你的目标。
也许最简洁的方法是将子类TextBox
并添加一个名为HintText
的新属性。只要Text
为空(""
),您的控件的模板将显示HintText
(可能以斜体和灰色显示)。否则,它会像常规的TextBox
一样显示Text
。
不涉及编写自己的控件的替代方法是重新模板TextBox
并使用Tag
属性来存储提示文本。
另一种替代方法是编写一个UserControl
,结合了,比方说一个TextBox
,一个TextBlock
相同Grid
内部。 TextBlock
将包含提示文本,并且只有在TextBox
的Text
为空时才会显示。这可能是最容易实现的,但也是最不灵活的。
下载它对于这些类型的东西我认为最好的方式是使用视觉画笔设置背景。 可视化画笔可让您使用Visual Elements绘制背景,并将其与基于文本为空的触发器结合起来并完成。
空列表框消息的例子在这里,基本上是一样的东西。 http://adammills.wordpress.com/2010/08/04/simple-empty-template-for-itemscontrols/
此样式将使用背景属性和一个可视化刷子显示文本。一旦控件获得焦点,文本将被删除。
<TextBox.Style>
<Style TargetType="TextBox">
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=Text}" Value="">
<Setter Property="Background">
<Setter.Value>
<VisualBrush Stretch="None">
<VisualBrush.Visual>
<TextBlock Text="Enter value" Foreground="Gray"/>
</VisualBrush.Visual>
</VisualBrush>
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=Text}" Value="{x:Null}">
<Setter Property="Background">
<Setter.Value>
<VisualBrush Stretch="None">
<VisualBrush.Visual>
<TextBlock Text="Enter value" Foreground="Gray"/>
</VisualBrush.Visual>
</VisualBrush>
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsFocused}" Value="True">
<Setter Property="Background">
<Setter.Value>
<VisualBrush Stretch="None">
</VisualBrush>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
简单,在我看来这应该被标记为很好的答案。 – 2013-04-26 15:27:46
我认为WPF扩展工具包中包含的WatermarkTextBox完全符合你的要求。
http://wpftoolkit.codeplex.com/wikipage?title=WatermarkTextBox&referringTitle=Documentation
- 1. WPF文本框使用默认文本
- 2. 将默认搜索文本添加到搜索框html
- 3. 如何更改IOS中搜索栏中的默认文本?
- 4. 如何在wpf datagrid中继承默认的文本框样式?
- 5. 如何实现用DataTemplate搜索WPF ListBox?
- 6. 如何实现索引[]默认属性
- 7. 如何在密码框wpf中设置一些默认文本?
- 8. 将SharePoint 2010中的默认搜索框替换为自定义搜索框
- 9. WPF文本框的搜索组件
- 10. 谷歌自定义搜索的搜索框中的默认值
- 11. 搜索框Webpart - 默认为自定义搜索范围
- 12. 如何在自动完成实现的文本框中设置默认值?
- 13. 造型的默认WordPress的搜索框
- 14. 如何从Google搜索框中删除默认的Google搜索值?
- 15. EXTJS4-如何实现搜索框
- 16. 如何实现与WPF中的清除按钮的文本框?
- 17. 默认数据表格搜索框文本
- 18. 如何设置jqGrid中搜索框的默认列?
- 19. 在jsp中实现mongodb文本搜索
- 20. textbox中的默认文本wpf
- 21. 出现在密码文本框中的默认文本..如何使其消失?
- 22. WPF:如何样式或禁用文本框的默认文本菜单
- 23. 如何为文本框值实现htmlspecialchars?
- 24. 如何将默认搜索设置为文件搜索Vim插件CtrlP?
- 25. 默认FB搜索
- 26. 如何删除动态文本框中的默认文本
- 27. 如何避免文本框中的默认文本?
- 28. 如何使HTML文本框默认
- 29. 默认实现
- 30. 样式默认文本菜单文本框在WPF
我刚才已经回答了另一个问题问同样的事情:http://stackoverflow.com/a/10693516/862501 – mxgg250 2012-05-21 22:36:42