Xamarin 如何对自己的元素进行编码,使其响应DynamicSource中的更改?

Xamarin 如何对自己的元素进行编码,使其响应DynamicSource中的更改?,xamarin,xamarin.forms,Xamarin,Xamarin.forms,我有一个XAML,每当我的应用程序更改DynamicSource TextColor的值时,标签的文本颜色都会更改 <Label TextColor="{DynamicResource TextColor}" /> 我知道我可以创建自己的自定义标签,如下所示: namespace Ja.Templates { public class Label : Label { public Label() {

我有一个XAML,每当我的应用程序更改DynamicSource TextColor的值时,标签的文本颜色都会更改

<Label TextColor="{DynamicResource TextColor}" />

我知道我可以创建自己的自定义标签,如下所示:

namespace Ja.Templates
{
    public class Label : Label
    {
        public Label()
        {
            Application.Current.Resources.TryGetValue("TextColor", out object textColor);
            TextColor = (Color)textColor;
        }
    }
}

<t:Label TextColor="{DynamicResource TextColor}" />
namespace Ja.Templates
{
公共类标签:标签
{
公共标签()
{
Application.Current.Resources.TryGetValue(“TextColor”,out对象TextColor);
TextColor=(Color)TextColor;
}
}
}
我的问题是Template.Label不响应DynamicSource TextColor中的更改

如何将此功能添加到标签中?请注意,这只是一个示例,我的实际代码比创建标签更复杂,但我尝试为这个问题提供最简单的代码

我希望找到的是如何使我的对象响应DynamicSource中的更改

如果需要,可以在.ctor中分配属性和动态资源名称:

public MyLabel()
{
    SetDynamicResource(Label.FontColorProperty, "TextColor");
}
然后在“代码隐藏”表单中为动态资源分配一个值:

Resources["TextColor"] = "Red";

您正在创建
Ja.Templates.Label
,但是您的Xaml正在使用
Xamarin.Forms.Label
(可以从Xamarin.Forms命名空间而不是您自己的命名空间中联想到)是的,这只是第一个Xamarin.Forms.Label将获取动态资源的示例,但我自己的Ja.Templates.Label在创建对象后不会接受/响应DynamicSource中的更改。那么您的实际XAML是什么?我使用的XAML是这样的,它为我提供了正确的TextColor,但不跟踪对DynamicSource的更改?然后您可以只
参考资料[“TextColor”]=“红色”(无需使用子类标签)