Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在generic.xaml中引用自定义WPF控件_Wpf_Xaml_Namespaces_Declaration_Resourcedictionary - Fatal编程技术网

如何在generic.xaml中引用自定义WPF控件

如何在generic.xaml中引用自定义WPF控件,wpf,xaml,namespaces,declaration,resourcedictionary,Wpf,Xaml,Namespaces,Declaration,Resourcedictionary,我正在尝试创建一个自定义WPF控件,该控件继承自标准TextBlock,如下所示: public class DynamicDateTextBlock : TextBlock { static DynamicDateTextBlock() { DefaultStyleKeyProperty.OverrideMetadata(typeof(DynamicDateTextBlock), new FrameworkPropertyMetadata(typeof(Dyna

我正在尝试创建一个自定义WPF控件,该控件继承自标准TextBlock,如下所示:

public class DynamicDateTextBlock : TextBlock
{
    static DynamicDateTextBlock()
    {
        DefaultStyleKeyProperty.OverrideMetadata(typeof(DynamicDateTextBlock), new FrameworkPropertyMetadata(typeof(DynamicDateTextBlock)));
    }
}
<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>
相应的generic.xaml如下所示:

public class DynamicDateTextBlock : TextBlock
{
    static DynamicDateTextBlock()
    {
        DefaultStyleKeyProperty.OverrideMetadata(typeof(DynamicDateTextBlock), new FrameworkPropertyMetadata(typeof(DynamicDateTextBlock)));
    }
}
<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.Controls”中不存在

cs命名空间更改为
Test.Controls

在xaml中,我尝试这样使用它:
xmlns:local=“clr namespace:Test.Controls”

还有什么我必须做的吗


使用Resharper重构控件以移动它也会出现同样的问题

DynamicDateTextBlock
移动到
Controls
文件夹时,以及更改
xmlns:local=“clr namespace:Test.Controls”
后,即使出现错误,也尝试重新生成并运行应用程序。应该启动应用程序。你所有的行动都是正确的

更新:
更改xaml
xmlns:local=“clr namespace:Test.Controls”
后,应手动再次键入。我是手工输入的,没有错误。

当您将
DynamicDateTextBlock
移动到
Controls
文件夹,并且在更改
xmlns:local=“clr namespace:Test.Controls”
后,即使出现错误,也尝试重新构建并运行应用程序。应该启动应用程序。你所有的行动都是正确的

更新:
更改xaml
xmlns:local=“clr namespace:Test.Controls”
后,应手动再次键入。我手动键入,没有错误。

我是这么想的,但在我移动控件后,它不再编译了:
有生成错误。
尝试运行后,错误列表显示了另一个错误:
在类型“Test.Controls.DynamicDateTextBlock”上找不到样式属性“Template”。第5行第17位。
@Mikk请查看我的最新答案。请随便问任何问题。这很奇怪,对我来说,在一个新的,否则是空的解决方案中,它甚至不起作用。自动完成提示在intellisense中完全相同。。但我无法生成并运行结果。@Mikk尝试重新启动您的电脑,并手动重复键入,而不是复制
xmlns
,这是我的想法,但在我移动控件后,它不再编译了,并给出:
有生成错误。
尝试运行后,错误列表显示了另一个错误:
在类型“Test.Controls.DynamicDateTextBlock”上找不到样式属性“Template”。第5行第17位。
@Mikk请查看我的最新答案。请随便问任何问题。这很奇怪,对我来说,在一个新的,否则是空的解决方案中,它甚至不起作用。自动完成提示在intellisense中完全相同。。但我无法生成并运行结果。@Mikk尝试重新启动您的电脑并手动重复键入,而不是复制
xmlns