WPF TextBox: стиль установки ошибок - PullRequest
1 голос
/ 03 сентября 2010

Я определил стиль для своих текстовых полей, которые будут показывать подсказки о том, что вводить, когда текстовое поле пусто.

Это будет мое окно:

<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 Ответ

6 голосов
/ 03 сентября 2010
Style="{StaticResource stlHintbox}"

Вам необходимо использовать синтаксис расширения разметки для ссылки на ресурс из словаря.

Если ресурс находится в области видимости и доступен во время разработки, вы можете использовать StaticResource, так какв этом случае.Если он будет доступен, когда все части соберутся во время выполнения, например, из словаря ресурсов или содержащего окно / элемент управления, вам понадобится DynamicResource, недостатком является полное отсутствие проверки компилятором.

...