我有这个XAML,每当我的应用程序更改DynamicResource TextColor的值时,Label的文本颜色就会更改
<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}" />
我的问题是Template.Label不响应DynamicResource TextColor中的更改。
如何将该功能添加到我的标签中?请注意,这只是一个示例,我的实际代码比仅创建标签还要复杂,但是我尝试给出此问题的最简单代码。谢谢
答案 0 :(得分:1)
我希望发现的是如何使对象响应DynamicResource中的更改
如果需要,可以在.ctor中分配属性和动态资源名称:
public MyLabel()
{
SetDynamicResource(Label.FontColorProperty, "TextColor");
}
然后在表单的代码后面,为动态资源分配一个值:
Resources["TextColor"] = "Red";