2016-04-17 2 views
1

Я пытаюсь создать пользовательский элемент управления WPF, который наследуется от стандартного TextBlock, как это:Как ссылаться Пользовательские WPF управления в Generic.xaml

public class DynamicDateTextBlock : TextBlock 
{ 
    static DynamicDateTextBlock() 
    { 
     DefaultStyleKeyProperty.OverrideMetadata(typeof(DynamicDateTextBlock), new FrameworkPropertyMetadata(typeof(DynamicDateTextBlock))); 
    } 
} 

Предос- Generic.xaml выглядит следующим образом:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
        xmlns:local="clr-namespace:Test"> 
    <Style TargetType="{x:Type local:DynamicDateTextBlock}"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type local:DynamicDateTextBlock}"> 
        <Border Background="{TemplateBinding Background}" 
          BorderBrush="{TemplateBinding BorderBrush}" 
          BorderThickness="{TemplateBinding BorderThickness}" /> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</ResourceDictionary> 

Если я положил control.cs в корень моего решения, все работает нормально. Но если переместить в вложенную папку Test \ Controls и изменить пространство имен, соответственно, вдруг Generic.xaml дает компиляции ошибки

Название «DynamicDateTextBlock» не существует в пространстве имен «CLR-имен: Test. Управление»

CS-имен получает изменено на Test.Controls

и в XAML я стараюсь использовать его как это: xmlns:local="clr-namespace:Test.Controls"

ли есть что-то еще, что я должен сделать?

Рефакторинг управления с помощью Resharper для его перемещения дает ту же проблему.

ответ

0

Когда вы перемещаете свою DynamicDateTextBlock в папку Controls и после того, как вы изменили xmlns:local="clr-namespace:Test.Controls", попробуйте перестроить и запустить приложение, даже если есть ошибки. Приложение должно быть запущено. Все ваши действия верны.

Update: После изменения XAML xmlns:local="clr-namespace:Test.Controls", вы должны ввести снова своими руками. Я набрал вручную, и ошибок нет.

+0

это то, что я думал, но не компиляции больше после того, как я переместил контроль дает: 'Были построить errors.' После попытки запуска, список ошибок показывает еще один: ' Не удается найти свойство стиля ' Шаблон 'в типе' Test.Controls.DynamicDateTextBlock '. Строка 5 Позиция 17.' – Mikk

+0

@Mikk, пожалуйста, см. Мой обновленный ответ. Не стесняйтесь задавать любые вопросы. – StepUp

+0

Это странно, для меня он не работает даже вручную в новом, иначе пустом решении. автозаполнение предлагает точно то же самое в intellisense .. но я не могу построить и запустить результат. – Mikk

Смежные вопросы