2

Я пытаюсь изучить Silverlight здесь, создав настраиваемый шаблон управления, однако VS2010 не признает тип ControlTemplate в код разметки, хотя я ссылаюсь на System.Windows и System.Windows.Controls (который по умолчанию используется при создании проекта в стандартном шаблоне приложения Silverlight). Я пытаюсь воссоздать this seen on another SO stack.VS2010 не может найти тип ControlTemplate, хотя ссылается на System.Windows

Я пытался поставить этот код непосредственно в файл (т.е. ImageButton.xaml) и ничего больше:

<ControlTemplate x:Key="ImageButtonTemplate"> 
    <Image Source="{TemplateBinding Content}" /> 
</ControlTemplate> 
+0

добавить Refernce System.Windows.Controls – Malcolm

+0

Есть ли тоже;) –

+0

Вы ссылались на правильные версии сборок? –

ответ

0

Это немного сложно ответить на этот вопрос авторитетно, не зная немного больше контекста, например, какой тип файла вы размещаете, и какова точная ошибка от Visual Studio. Я полагаю, что вы получаете сообщение об ошибке, такие как:

The type 'ControlTemplate' was not found. Verify that you are not missing an assembly reference and that all referenced assemblies have been built.

или, возможно:

Property 'Content' does not support values of type 'ControlTemplate'

Это вызвано, помещая шаблон в неположенном месте - например, если вы создайте новый UserControl (через Добавить -> Новый элемент) и удалите содержимое файла и вставьте его в свой код, тогда вы получите эту ошибку, так как xaml не имеет ссылок на ControlTemplate.

Лучшее место, чтобы поставить ControlTemplate где-то многоразовые, такие как новый "Resource Dictionary" (опять же, добавить его через Add -> New Item -> Silverlight Ресурсный словарь), а затем поместить свой код внутри<ResourceDictionary ...></ResourceDictionary> теги.

Если вы хотите, чтобы поместить его в UserControl (источник второй ошибки), то вы должны добавить его в Resources части этого элемента управления, например:

<UserControl.Resources> 
    <ControlTemplate x:Key="ImageButtonTemplate"> 
     <Image Source="{TemplateBinding Content}" /> 
    </ControlTemplate> 
</UserControl.Resources>