Свойство «Шаблон» не найдено в типе «FrameworkElement» - PullRequest
3 голосов
/ 03 сентября 2011

Прошу прощения за то, что я новичок, но я следую учебному пособию ( Создание пользовательского шаблона кнопки WPF в XAML ), и я сталкиваюсь с ошибкой:

Возникла исключительная ситуация FormatException из-за ошибки документа: свойство «Шаблон» не найдено в типе «FrameworkElement».

Похоже, что ошибка связана с кодом XAML:

 <Setter Property="Template">
     <Setter.Value>
         <ControlTemplate TargetType="Button">
             <Border Name="border"
                BorderThickness="1"
                Padding="4,2"
                BorderBrush="DarkGray"
                CornerRadius="3"
                Background="{TemplateBinding Background}">
                <Grid >
                <ContentPresenter HorizontalAlignment="Center"
                          VerticalAlignment="Center" Name="contentShadow"
                    Style="{StaticResource ShadowStyle}">
                    <ContentPresenter.RenderTransform>
                        <TranslateTransform X="1.0" Y="1.0" />
                    </ContentPresenter.RenderTransform>
                </ContentPresenter>
                <ContentPresenter HorizontalAlignment="Center"
                       VerticalAlignment="Center" Name="content"/>
                </Grid>
        </Border>

Я всюду искал решение, но не нашел его ... это заставляет меня думать, что я что-то упускаю из виду или слишком много думаю.

Что яотсутствует?Заранее благодарю за любую помощь!

1 Ответ

3 голосов
/ 04 сентября 2011

A FrameworkElement не имеет свойства Template. Шаблон обычно определяется в классе Control. Это связано с тем, что большинство элементов WPF являются производными от FrameworkElement, но не у всех есть шаблон (например, StackPanel). Ваш сеттер, вероятно, в стиле (вы не опубликовали эту часть). Убедитесь, что TargetType из Style - правильный тип (скорее всего, Button).

<Style x:Key="InformButton" TargetType="Button">
    <Setter Property="Template">
         <Setter.Value>
             <ControlTemplate TargetType="Button">
                <Border Name="border"
                etc...
</Style>
...