对于我正在处理的项目,我必须创建一个ContentControl,当不允许某些提供的内容时,它必须显示ToolTip / Popup。 例如: TextBox包含在ContentControl中,ContentControl提供了在TextBox中输入不需要的字符时显示工具提示的逻辑。 工具提示会显示不需要的字符,在x时间后,工具提示会消失。
但是,使用ToolTip方法会导致意外和不需要的行为;
因此,我需要另一个不依赖于工具提示的解决方案。
Xaml结构就像
<ContentControl x:Class="xxx.yyy.zzz.UserControls.MyContentControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
... more namespaces ...>
<ContentControl.Template>
<ControlTemplate TargetType="ContentControl">
<ContentPresenter Content="{TemplateBinding Content}">
<ContentPresenter.ToolTip>
...
它的用法如下:
<UserControl:Class="xxx.yyy.UserControls.TextBoxControl"
xmlns:cn="clr-namespace:xxx.yyy.zzz.UserControls">
<cn:MyContentControl Info="{Binding ..}" x:Name="MyContentControlName">
<TextBox Text="{Binding Text}" .."/>
</cn:MyContentControl>
其中Info是我的ContentControl的代码隐藏使用的依赖属性,其输入绑定由TextBoxControl的ViewModel提供。
旁注: 对于我们的验证,我们依赖于Validation Error Style in WPF, similar to Silverlight和How can I move a WPF Popup when its anchor element moves?
的实现我试图合并上面提到的第一个链接中的一些模板代码,结果只显示一个小小的弹出窗口,没有显示任何内容,也没有给我我期望的行为。
从代码片段中可以看出,以前我使用的是ContentPresenter.ToolTip,遗憾的是没有ContentPresenter.Popup这样的东西,而我相信ToolTip 是弹出窗口
那么如何为这段代码创建类似行为的popup呢? (这将代表WPF UI上的TextBox)
<ContentPresenter Content="{TemplateBinding Content}">