Неявная тема error:The свойство 'Content' не была найдена в типе 'Систему. Windows. Средства управления. Управление'

У меня есть ошибка при попытке обновить наш крупный проект до SL4. Я не записал исходную тему, и моя тема knowlege не является большим. В моем демонстрационном приложении у меня есть Маркировка и LabelHeader (который я создал, и просто производный класс от Маркировки с DefaultStyleKey = typeof (LabelHeader);
Я разрабатываю LabelHeader как это:

 

Это работает в SL3, но в SL4 я добираюсь:

Ошибка: необработанная ошибка в коде приложения Silverlight: 2500
Категория: ParserError
Сообщение: свойство 'Content' не было найдено в типе 'Систему. Windows. Средства управления. Управление'.
Файл:
Строка: 9
Положение: 168

Если я изменяю это: Содержание = "{Содержание TemplateBinding}" к Содержанию = "XXX" Затем нет никакой ошибки, но, конечно, я добираюсь XXX в моей маркировке, а не содержании, которое я установил в XAML на странице

Какие-либо идеи, как я могу получить эту работу?

Демонстрационный проект здесь:

http://walkersretreat.co.nz/files/ThemeIssue.zip

(Извинения за перерегистрацию, я до сих пор не получил ответов здесь: http://forums.silverlight.net/forums/p/183380/415930.aspx#415930)

ОТРЕДАКТИРУЙТЕ предоставленный ответ, похож на него, будет работать. Проблема была открыта для этой проблемы здесь: https://connect.microsoft.com/VisualStudio/feedback/details/561183

голосуйте, если Вы думаете, что это важно!

5
задан Mark 25 May 2010 в 01:37
поделиться

2 ответа

Благодаря публикации Вольфа Шмидта (MSFT) на форуме www.silverlight.net проблема была выявлена, объяснена и потенциально решена в соответствии с планом.По его словам, Silverlight 4 теперь будет более строго рассматривать квазидинамическое поведение Silverlight 3 в отношении ControlTemplate, что приводит к ошибке в Silverlight 4, когда свойство не существует для TargetType ControlTemplate. Важно отметить, что когда TargetType не указан в ControlTemplate, по умолчанию используется TargetType = "Control".

Решение проблемы состоит в том, чтобы указать TargetType для ControlTemplate, чтобы разрешить свойства, используемые в привязке шаблона.

Вот обновленный стиль с TargetType, указанным для ControlTemplate:

<Style x:Key="LabelHeader" TargetType="controls:Label">
    <Setter Property="Margin" Value="0" />
    <Setter Property="Opacity" Value=".6" />
    <Setter Property="VerticalAlignment" Value="Stretch" />
    <Setter Property="VerticalContentAlignment" Value="Center" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="controls:Label">
                <Border BorderBrush="#CCCCCCCC" BorderThickness=".5" Background="#CCEFEFEF">
                    <ContentPresenter VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Margin="2" Content="{TemplateBinding Content}"/>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

Однако было бы очень полезно для разработчиков, если бы IDE / intellisense могла проверить, что свойство, указанное в TemplateBinding, действительно существует в заданном по умолчанию / заданном TargetType объекта ControlTemplate.

Источник: - наши обсуждения на форуме Silverlight .NET: (недостаточно репутации для публикации> 1 гиперссылка) - Моя проблема с MS Connect: https://connect.microsoft.com/VisualStudio/feedback/details/561183

6
ответ дан 13 December 2019 в 22:02
поделиться

При возникновении этого исключения в Silverlight 4 в некоторых ситуациях возникает ошибка. Это специфично для свойства содержимого.

Похоже, временное исправление заключается в использовании обычной привязки для свойства Content.

Content="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Content}"

Хотя я еще не тестировал это решение.

4
ответ дан 13 December 2019 в 22:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: