我有一个DefaultStyle和另一个像这样定义的Style
<Style TargetType="{x:Type my:CustomButton}" BasedOn="{StaticResource DefaultStyle}" x:Key="DefaultCustomButton"> ...
然后,定义了这个样式,我有
<Style TargetType="{x:Type my:CustomButton}" BasedOn="{StaticResource DefaultCustomButton}" />
到目前为止没有问题。
现在,我想重用第二种风格的一部分,所以我定义如下:
<Style TargetType="{x:Type my:CustomToggleButton}" BasedOn="{StaticResource DefaultCustomButton}" x:Key="DefaultToggleButton"> ...
然后
<Style TargetType="{x:Type my:CustomToggleButton}" BasedOn="{StaticResource DefaultToggleButton}" />
最后,我在一个窗口中使用了新的按钮:
<my:CustomToggleButton x:Name="measurableButton">Text Goes Here</my:CustomToggleButton>
这时,我得到了这个错误:
"无法将属性'BasedOn'中的值转换为类型的对象。"System.Windows.Style"。只能基于目标类型的样式吗这是基本类型'CustomToggleButton'。
明显吗?CustomToggleButton必须从CustomButton派生吗?
请参阅此处的注释(页面下方的黄色部分):http://msdn.microsoft.com/en-us/library/system.windows.style.basedon.aspx
所以你的CustomToggleButton
一定来源于CustomButton
。我假设(现在)基于错误,它没有。