【发布时间】:2021-08-19 21:56:47
【问题描述】:
我有一个附加属性,例如:
namespace Project.Controls.MyControl
{
public static class Transform
{
public static readonly DependencyProperty RelativeOffsetXProperty = DependencyProperty.RegisterAttached(
"RelativeOffsetX",
typeof(double),
typeof(Transform),
new PropertyMetadata(
default(double),
OnRelativeOffsetXChanged));
// ...
}
}
使用如下:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Project.Controls.MyControl">
<Style TargetType="{x:Type local:MyControl}">
<Style.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/Controls/MyControl/IndexItemStyle.xaml" />
<ResourceDictionary Source="pack://application:,,,/Controls/MyControl/ArrowButtonStyle.xaml" />
<ResourceDictionary Source="pack://application:,,,/Controls/MyControl/MyControlTemplate.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Style.Resources>
<!-- more code -->
<Setter Property="IncreaseInAnimation">
<Setter.Value>
<Storyboard>
<!-- more code -->
<DoubleAnimation BeginTime="0:0:0"
FillBehavior="HoldEnd"
Storyboard.TargetProperty="(local:Transform.RelativeOffsetX)"
From="1"
To="0"
Duration="0:0:0.3" />
</Storyboard>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
这在调试时效果很好,没有问题。但是在安装应用的生产版本时,它会在启动时崩溃,并出现以下异常:
类型引用找不到名为 '{clr-namespace:Project.Controls.MyControl;assembly=Project, Version=X.X.X.0, Culture=neutral, PublicKeyToken=XXXX}Transform'的类型
有没有人知道是什么原因造成的,或者有一些关于如何调试它的提示?这个错误完全没有意义,尤其是在调试中一切正常。
注意:一切都在同一个程序集中。
【问题讨论】:
-
你的意思是
public Project.Controls.MyControl实际上应该是namespace Project.Controls.MyControl,并且该命名空间中还有一个名为MyControl的类,其属性名为IncreaseInAnimation,类型为Storyboard? -
是的,这就是我的意思。我不能真正从项目中复制粘贴代码,所以这是我的错误。我现在修好了。在
Project.Controls.MyControl命名空间中有一个MyControl类,它具有上述属性。 -
听起来很奇怪。该控件有一个 Storyboard 属性,您为该属性分配了一个带有 DoubleAnimation 的 Storyboard,它应该为同一控件实例上的附加属性设置动画?为什么故事板应该由控件属性存储?
-
这不是我的代码,它基于这个项目github.com/GuOrg/Gu.Wpf.FlipView。我不得不根据自己的需要组装零件并对其进行修改,但这无关紧要。启动调试时,代码按预期工作。由于某种原因,产品版本中的类型引用失败。
标签: c# wpf xaml controls attached-properties