none
使用UserControl,通过xaml设置自定义依赖属性Color类型的字段,编译时出现默认值类型与属性“XXX”类型不匹配的异常,问题出在哪里? RRS feed

  • 问题

  •         public Color MyBackground
            {
                get { return (Color)GetValue(MyBackgroundProperty); }
                set { SetValue(MyBackgroundProperty, value); }
            }
    
            public static readonly DependencyProperty MyBackgroundProperty =
                DependencyProperty.Register("MyBackground", typeof(Color), typeof(MyUserControl), new PropertyMetadata(Brushes.Transparent));
    
    
    <!--  背景色绑定-->
    <Border Background="{Binding RelativeSource={RelativeSource   Mode= FindAncestor,  AncestorType={x:Type local:MyUserControl}, Path=MyBackground}"></Border>
    是哪里出问题了?


    • 已编辑 Trian555 2019年2月18日 7:36
    2019年2月18日 7:33

答案

  • Border 的 Background 屬性型別是 Brush 類,而非 Color。

    要不就是把自訂的 MyBackground 改成 Brush 類宣告,不然就是內部從 Color 轉換為 SolidColorBrush

    建議是把 MyBackground 與對應的 DependencyProperty 從 Color 改成 Brush

    另外, Brushes.Transparent 的型別是 SolidColorBrush , 不是 Color


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。 https://skilltree.my/



    2019年2月18日 10:23