WPF TextBox:错误设置样式

时间:2010-09-03 19:17:51

标签: wpf textbox styles

我已经为我的文本框定义了样式,可以显示文本框为空时要输入的内容。

这将是我的窗口:

<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>内时样式工作正常,所以我在这里做错了什么?

1 个答案:

答案 0 :(得分:6)

Style="{StaticResource stlHintbox}"

您需要使用标记扩展语法来引用字典中的资源。

如果资源在范围内且在设计时可用,则可以使用StaticResource,如本例所示。如果在运行时将所有部分组合在一起时可用,例如从资源字典或包含窗口/控件,那么您需要DynamicResource,缺点是完全没有编译器检查。