C#-UWP无法在自定义控件中分配给属性错误

我有一个自定义控件LineChart. xaml.cs中的代码:

public static readonly DependencyProperty StrokeProperty =
        DependencyProperty.Register("StrokeProperty", typeof(Brush), typeof(LineChart), new PropertyMetadata(new SolidColorBrush(),
            new PropertyChangedCallback(OnItemsChanged)));

public Brush Stroke
{
    get { return (Brush)GetValue(StrokeProperty); }
    set { SetValue(StrokeProperty, value); }
}

在视图模型类中:

public Brush Abc
{
    get { return new SolidColorBrush(new Color() {A = 123, B = 123, G = 23, R = 12 } ); }
}

在其他页面:

<controls:LineChart  Stroke="{Binding Abc}" />

静态代码行Stroke =“ Green”都可以正常工作,但是当我使用Binding时,程序由于错误而崩溃:

Windows.UI.Xaml.Markup.XamlParseException: The text associated with
this error code could not be found.

Failed to assign to property
CurrencyExchangeUniversal.App.Controls.LineChart.Stroke’. [Line: 102
Position: 41] at Windows.UI.Xaml.Application.LoadComponent(Object
component, Uri resourceLocator, ComponentResourceLocation
componentResourceLocation) at
CurrencyExchangeUniversal.App.View.NationalBankPage.InitializeComponent()
at CurrencyExchangeUniversal.App.View.NationalBankPage..ctor()

解决方法:

您在DependencyProperty.Register调用中犯了一个错误.第一个参数值应该是“ Stroke”,而不是“ StrokeProperty”:

public static readonly DependencyProperty StrokeProperty =
        DependencyProperty.Register("Stroke", typeof(Brush), typeof(LineChart), new PropertyMetadata(new SolidColorBrush(),
            new PropertyChangedCallback(OnItemsChanged)));
上一篇:HTML的圣诞树


下一篇:结合使用ComboBox中选定的TimeZone,在文本框中显示时间