我已经为我的文本框定义了样式,可以显示文本框为空时要输入的内容。
这将是我的窗口:
<Grid>
<Grid.Resources>
<Style TargetType="{x:Type TextBox}" x:Key="stlHintbox">
<Style.Triggers>
<DataTrigger Binding="{Binding Text, RelativeSource={RelativeSource Mode=Self}}" Value="">
<Setter Property="Background">
<Setter.Value>
<VisualBrush Stretch="None">
<VisualBrush.Visual>
<TextBlock Text="First name" FontStyle="Italic" Foreground="LightGray" />
</VisualBrush.Visual>
</VisualBrush>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Resources>
<TextBox Style="stlHintbox" />
</Grid>
抛出的错误是:
'Set property 'System.Windows.FrameworkElement.Style' threw an exception.' Line number '22' and line position '11'.
内部例外:
"'stlHintbox' is not a valid value for property 'Style'."
当放在<TextBox.Style>
内时样式工作正常,所以我在这里做错了什么?
答案 0 :(得分:6)
Style="{StaticResource stlHintbox}"
您需要使用标记扩展语法来引用字典中的资源。
如果资源在范围内且在设计时可用,则可以使用StaticResource
,如本例所示。如果在运行时将所有部分组合在一起时可用,例如从资源字典或包含窗口/控件,那么您需要DynamicResource
,缺点是完全没有编译器检查。