Welcome

首页 / 软件开发 / .NET编程技术 / [WPF]在Style中设置ToolTip的问题分析

[WPF]在Style中设置ToolTip的问题分析2011-11-30 博客园 winkingzhang刚才开到智者千虑发的【WPF】在Style中设置ToolTip的问题的博文,虽然最终给了一个暂时解决问题的方案,但是没有分析和解释其中的问题,正与他所说:但至于为什么不能直接在Setter.Value中放置TextBlock还是一个未解之谜。

趁着中午间隙,跟踪了一下,这里我将带给你完整的分析。

为了描述问题,首先,给出问题的xaml,当然,你也可以去智者千虑的blog查看详细描述。

<TextBlock x:Name="textBlockContainer" Text="ABC" Margin="10"><!--如下的写法没有问题--><!--<ToolTipService.ToolTip><TextBlock Text="// 通过绑定等方式从某地方获取文本"TextWrapping="Wrap"Width="70" /></ToolTipService.ToolTip>--><!--使用Style为ToolTip赋值,出错!将会抛出exception--><TextBlock.Style><Style TargetType="TextBlock"><Setter Property="ToolTipService.ToolTip"><Setter.Value><TextBlock x:Name="tooltipBlock"Text="// 通过绑定等方式从某地方获取文本"TextWrapping="Wrap"Width="70" /></Setter.Value></Setter></Style></TextBlock.Style></TextBlock>
其中异常的信息为:

Exception

System.Windows.Markup.XamlParseException occurredMessage="Cannot add content of type "System.Windows.Controls.TextBlock" to an object of type "System.Object".Error at object "System.Windows.Controls.TextBlock" in markup file "WpfApplication1;component/window1.xaml" Line 17 Position 30."Source="PresentationFramework"LineNumber=17LinePosition=30NameContext="Value"StackTrace: at System.Windows.Markup.XamlParseException.ThrowException(String message, Exception innerException, Int32 lineNumber, Int32 linePosition, Uri baseUri, XamlObjectIds currentXamlObjectIds, XamlObjectIds contextXamlObjectIds, Type objectType)InnerException: