我想为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. Silverlight搜索文本框中的默认文本
- 2. WPF文本框使用默认文本
- 3. 如何实现用DataTemplate搜索WPF ListBox?
- 4. 将SharePoint 2010中的默认搜索框替换为自定义搜索框
- 5. WPF文本框的搜索组件
- 6. 造型的默认WordPress的搜索框
- 7. 如何从Google搜索框中删除默认的Google搜索值?
- 8. 如何设置jqGrid中搜索框的默认列?
- 9. 如何实现默认NSFetchedResultsControllerDelegate
- 10. textbox中的默认文本wpf
- 11. 出现在密码文本框中的默认文本..如何使其消失?
- 12. 如何为文本框值实现htmlspecialchars?
- 13. WPF:如何样式或禁用文本框的默认文本菜单
- 14. 如何将默认搜索设置为文件搜索Vim插件CtrlP?
- 15. 默认FB搜索
- 16. 如何避免文本框中的默认文本?
- 17. 默认为文本搜索与红宝石和铁轨
- 18. 如何为邮箱的每个框实现'搜索功能'
- 19. 如何在堆栈溢出网站中实现搜索文本框?
- 20. 在Flex 3 Textarea中,如何实现文本搜索功能
- 21. 如何让Jquery DataTable默认搜索框过滤最少的列?
- 22. 我如何搜索文本框中的视觉基本文本
- 23. 如何实现redux搜索
- 24. 如何实现搜索?
- 25. 使用默认文本的文本框
- 26. 文本框的默认文本值
- 27. 如何实现带编辑文本的快速搜索功能
- 28. 在wpf文本框和c#中设置默认值
- 29. 如何调用heightForRowAtIndexPath的默认实现?
- 30. asp.net文本框默认值
我刚才已经回答了另一个问题问同样的事情:http://stackoverflow.com/a/10693516/862501 – mxgg250 2012-05-21 22:36:42