【发布时间】:2016-08-09 03:19:07
【问题描述】:
我正在尝试创建一个继承自标准 TextBlock 的自定义 WPF 控件,如下所示:
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 就会出现编译错误
命名空间“clr-namespace:Test.Controls”中不存在名称“DynamicDateTextBlock”
cs 命名空间更改为 Test.Controls
在 xaml 中我尝试像这样使用它:xmlns:local="clr-namespace:Test.Controls"
还有什么我必须做的吗?
使用 Resharper 重构控件以移动它会产生同样的问题。
【问题讨论】:
标签: wpf xaml namespaces declaration resourcedictionary