我尝试在textboxstyle上应用工具提示样式在用户控件中。我的风格是:
<UserControl.Resources>
<!--Style definition-->
</UserControl.Resources>
ToolTipStyle:
<Style x:Key="ToolTipStyle" TargetType="{x:Type ToolTip}">
<Setter Property="Width" Value="200"/>
<Setter Property="Height" Value="100"/>
</Style>
TextBoxStyle:
<Style x:Key="textBoxStyle" TargetType="{x:Type TextBox}">
<Setter Property="Width" Value="200"/>
<Setter Property="Height" Value="25"/>
<Setter Property="FontSize" Value="13"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<!--Apply toolip style-->
<Setter Property="ToolTip.Style" Value="{StaticResource ToolTipStyle}"/>
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="ToolTip"
Value="{Binding RelativeSource={RelativeSource Self},
Path =(Validation.Errors)[0].ErrorContent}"/>
</Trigger>
</Style.Triggers>
</Style>
TextBoxStyle适用于文本框constrol:
<TextBox Name="tbNick"
Text="{Binding Nick, Mode=OneWayToSource, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}"
Style="{StaticResource textBoxStyle}"/>
我收到了这个编译错误:
{“不允许Style对象影响的Style属性 它适用的对象。“}
堆栈跟踪:
在System.Windows.Markup.XamlReader.RewrapException(例外e, IXamlLineInfo lineInfo,Uri baseUri)at System.Windows.Markup.WpfXamlLoader.Load(XamlReader xamlReader, IXamlObjectWriterFactory writerFactory,Boolean skipJournaledProperties,Object rootObject,XamlObjectWriterSettings 设置,Uri baseUri)at System.Windows.Markup.WpfXamlLoader.LoadBaml(XamlReader xamlReader, Boolean skipJournaledProperties,Object rootObject,XamlAccessLevel accessLevel,Uri baseUri)at System.Windows.Markup.XamlReader.LoadBaml(Stream stream,ParserContext parserContext,Object parent,Boolean closeStream)at System.Windows.Application.LoadComponent(Object component,Uri resourceLocator)在Spirit.Views.ShellView.InitializeComponent()中 c:\ Users \ Jan \ Documents \ Visual Studio 2010 \项目\ C#\ Pokec__Messenger \ Spirit_MEF \查看\ ShellView.xaml:行 1在Spirit.Views.ShellView..ctor()中 C:\ Users \ Jan \ Documents \ Visual Studio 2010 \项目\ C#\ Pokec__Messenger \ Spirit_MEF \查看\ ShellView.xaml.cs:行 9
WPF中不允许在文本框样式上应用工具提示样式?我做错了什么?
同样在WPF中我使用caliburn.micro和MEF,但我认为它不会导致此错误。
答案 0 :(得分:10)
没有ToolTip.Style
这样的附加属性,编译器没有提供错误的信息描述。如果您希望TextBox
使用隐式样式的自定义样式:
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Page.Resources>
<Style x:Key="textBoxStyle" TargetType="{x:Type TextBox}">
<Style.Resources>
<Style x:Key="{x:Type ToolTip}" TargetType="{x:Type ToolTip}">
<Setter Property="Width" Value="200"/>
<Setter Property="Height" Value="100"/>
</Style>
</Style.Resources>
<Setter Property="Width" Value="200"/>
<Setter Property="Height" Value="25"/>
<Setter Property="FontSize" Value="13"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}"/>
</Trigger>
</Style.Triggers>
</Style>
</Page.Resources>
<Grid>
<TextBox Name="tbNick" Style="{StaticResource textBoxStyle}" Text="Test" ToolTip="Hey"/>
</Grid>
</Page>
答案 1 :(得分:9)
不允许Style对象影响它应用的对象的Style属性。 您可能需要在此处查看http://windows-presentation-foundation.com/WPF_Triggers.aspx
检查此代码以设置工具提示样式
<Grid>
<Grid.Resources>
<Style x:Key="MyTooltip" TargetType="{x:Type ToolTip}">
<Setter Property = "HorizontalOffset" Value="50"/>
<Setter Property = "VerticalOffset" Value="50"/>
<Setter Property = "Background" Value="Orange"/>
<Setter Property = "Foreground" Value="Red"/>
<Setter Property = "FontSize" Value="14"/>
<Setter Property = "FontWeight" Value="Bold"/>
<Setter Property = "FontFamily" Value="Courier New"/>
</Style>
</Grid.Resources>
<TextBox Margin="10,10,10,10" Height="20">
Pass over with your Mouse
<TextBox.ToolTip>
<ToolTip Style="{StaticResource MyTooltip}">
<TextBlock>This is the Tooltip</TextBlock>
</ToolTip>
</TextBox.ToolTip>
</TextBox>
</Grid>