WPF - 只能基于具有基本类型

时间:2017-07-12 14:52:58

标签: c# wpf xaml

这让我疯了,主要是因为在运行时它完美运行(问题只出现在设计时),但我还是决定问,因为我正在做一个大项目,我想以最好的方式实现

第一件事:我有一个来自第三方库的组件,它基本上就像一个边框,它是这样定义的(用F12):

public class AdvancedBorder : ContentControl

我喜欢这个东西的视觉方面,但我需要添加一些功能。所以我创建了一个新的自定义控件:

public class SelectableCard : AdvancedBorder
{
    // bunch of custom properties and stuff

    static SelectableCard()
    {
        DefaultStyleKeyProperty.OverrideMetadata(typeof(SelectableCard), new FrameworkPropertyMetadata(typeof(SelectableCard)));
    }
}

最后我需要保持完全相同的视觉效果但添加一些触发器,所以我把它放在generic.xaml中:

<Style TargetType="{x:Type customControls:SelectableCard}" BasedOn="{StaticResource ResourceKey={x:Type otherLibrary:AdvancedBorder}}">
    <Setter Property="HorizontalAlignment" Value="Stretch"/>
    <Setter Property="VerticalAlignment" Value="Stretch"/>
    <Style.Triggers>
        <Trigger Property="customControls:SelectableCard.IsSelected" Value="True">
            <Setter Property="Background" Value="{DynamicResource MyLightBrush}" />
        </Trigger>
    </Style.Triggers>
</Style>

customControls是我的命名空间的xmlns,otherLibrary是第三部分库的xmlns。

一切都在运行时完美运行,并且完全没有错误。在设计时我没有从generic.xaml中得到任何错误,但只要我将SelectableCard放入某个xaml文件中,我就得到了

  

只能基于具有基本类型的目标类型的Style   SelectableCard

我根本没有得到它,特别是因为它在运行时工作。我可以删除BasedOn属性,但在设计时我不再抱怨,但是我必须为模板添加setter,否则我在运行时看不到任何内容。

我做错了什么,这里?

0 个答案:

没有答案