我想为ToolTip
提供良好的TextBox
,所以我从简单的ToolTip
开始:
<TextBox>
<TextBox.ToolTip>
<StackPanel>
<TextBlock>Nice text</TextBlock>
<TextBlock>Nice text</TextBlock>
</StackPanel>
</TextBox.ToolTip>
</TextBox>
但是我有十几个TextBox
es,我希望他们都拥有上面的ToolTip
。这就是我决定将上面的代码转移到Style
文件中的原因。
我的Style
文件如下:
<Style x:Key="DefaultStyle" TargetType="{x:Type TextBox}">
<Setter Property="FontFamily" Value="Tahoma"/>
<Setter Property="FontSize" Value="15"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="TextAlignment" Value="Center"/>
<Setter Property="TextWrapping" Value="Wrap"/>
<Setter Property="BorderBrush" Value="#A9C2DE"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1" >
<GradientStop Color="#CDE1F7" Offset="0.01"/>
<GradientStop Color="#DFECFA" Offset="0.8" />
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="ToolTip">
<Setter.Value>
<StackPanel>
<TextBlock Text="Nice toolbox"/>
<TextBlock Text="Nice tooltip"/>
</StackPanel>
</Setter.Value>
</Setter>
</Style>
但是现在我得到错误XAML解析异常。
如何将这种ToolTip
(带StackPanel
s等)设置为TextBox
(来自样式文件)??
答案 0 :(得分:3)
Dotnet版本&lt; 4 强>
样式看起来很好但是在样式值中直接指定工具提示似乎存在问题。将ToolTip声明为资源,然后通过StaticResource将其设置为样式。
<ToolTip x:Key="YourToolTip" >
<StackPanel>
<TextBlock Text="Nice toolbox"/>
<TextBlock Text="Nice tooltip"/>
</StackPanel>
</ToolTip>
... Your Style...
<Setter Property="TextBox.ToolTip" Value="{StaticResource YourToolTip}"/>
...
Dotnet版本== 4
如果您使用.net4,那就是其他内容。你写道,你把它放在一个样式文件中。你的意思是资源文件?如果是,可能是您在运行时未加载它。类似的东西:
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/YourStyleFile.xaml"/>
<ResourceDictionary>
<!-- Other local resources -->
</ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
另一种可能性是您尝试在TextBox之外的其他类型上使用它。这不起作用,因为您将TextBox
声明为目标类型。