public class SizeAdjustChrome : Control {
static SizeAdjustChrome() {
FrameworkElement.DefaultStyleKeyProperty.OverrideMetadata(typeof(SizeAdjustChrome), new FrameworkPropertyMetadata(typeof(SizeAdjustChrome)));
}
public double GripCornerSize {
get { return (double)GetValue(GripCornerSizeProperty); }
set { SetValue(GripCornerSizeProperty, value); }
}
// Using a DependencyProperty as the backing store for GripCornerSize. This enables animation, styling, binding, etc...
public static readonly DependencyProperty GripCornerSizeProperty = DependencyProperty.Register("GripCornerSize", typeof(double), typeof(SizeAdjustChrome), new PropertyMetadata(7));
}
<Style TargetType="{x:Type local:SizeAdjustChrome}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:SizeAdjustChrome}">
<Grid>
<Grid Opacity="0" Margin="-7">
<!--左-->
<local:SizeAdjustThumb Height="{TemplateBinding GripCornerSize}" Cursor="SizeWE"
VerticalAlignment="Center" HorizontalAlignment="Left"/>
Height="{TemplateBinding GripCornerSize}"
提示类型初始化失败 有大佬知道是怎么回事吗
本问题来自阿里云开发者社区的【11大垂直技术领域开发者社群】。 https://developer.aliyun.com/article/706511 点击链接欢迎加入感兴趣的技术领域群。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
根据您提供的代码片段和错误描述,问题似乎出现在XAML模板绑定时尝试使用GripCornerSize
属性作为高度(Height)的值,但遇到了类型初始化失败的错误。这可能是由于以下几个原因造成的:
依赖属性注册问题:确保您的DependencyProperty
注册没有问题。在您给出的代码中,GripCornerSizeProperty
的注册看起来是正确的,所以这可能不是直接原因。
XAML命名空间问题:在XAML文件中,确保正确引用了包含SizeAdjustChrome
类的命名空间。例如,如果这个类位于某个特定的命名空间内,你需要在XAML头部声明它,如 <Window xmlns:local="clr-namespace:YourNamespace" ...>
,然后在使用控件或绑定时前缀以local:
。
TemplateBinding语法问题:在XAML中,如果您直接用TemplateBinding
来绑定到一个依赖属性,并且遇到类型初始化失败的问题,这可能是因为数据上下文或者模板应用的环境未被正确设置。请确认GripCornerSize
属性所在的控件已经被正确实例化并且其模板正在被应用。
类型转换问题:尽管可能性较小,但有时如果绑定目标期望的类型与提供值的类型不匹配,也可能导致类似错误。不过,在您的例子中,GripCornerSize
是double
类型,而Height
属性也是接受double
类型的,所以这应该不是问题所在。
其他外部因素:有时候,这种错误可能是由项目配置、编译器错误或其他外部因素引起的。检查是否有任何最近的更改影响了项目的编译或运行环境。
解决建议: - 确认XAML中是否正确引用了自定义控件的命名空间。 - 检查SizeAdjustChrome
控件实例化的地方,确保在模板应用之前该控件已被正确创建和配置。 - 查看编译输出窗口(Output Window)中的详细错误信息,通常这里会提供更多关于“类型初始化失败”具体原因的线索。 - 如果有对项目进行过更新或添加了新的库,请尝试清理解决方案(Clean Solution)并重新生成(Rebuild),有时候这能解决一些因编译缓存或状态不一致引起的问题。
如果以上步骤不能解决问题,建议提供更详细的错误信息或相关代码上下文,以便进行更深入的分析。