如何在代码中分配动态资源样式?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在代码中分配动态资源样式?相关的知识,希望对你有一定的参考价值。

我想在代码中生成相当于XAML中的这个:

<TextBlock
Text="Title:"
Width="{Binding FormLabelColumnWidth}"
Style="{DynamicResource FormLabelStyle}"/>

我可以做文本和宽度,但是如何将动态资源分配给样式:

TextBlock tb = new TextBlock();
            tb.Text = "Title:";
            tb.Width = FormLabelColumnWidth;
            tb.Style = ???
答案

你可以试试:

tb.Style = (Style)FindResource("FormLabelStyle");

请享用!

另一答案

如果需要真正的DynamicResource行为,则应使用FrameworkElement.SetResourceReference - 即在资源更改时更新目标元素。

tb.SetResourceReference(Control.StyleProperty, "FormLabelStyle")
另一答案

这应该工作:

tb.SetValue(Control.StyleProperty, "FormLabelStyle");
另一答案

最初的问题是如何使其成为动态,这意味着如果资源发生变化,控件将更新。上面的最佳答案使用了SetResourceReference。对于Xamarin框架,这是不可用的,但SetDynamicResource是,它确实完成了原始海报的要求。简单的例子

        Label title = new Label();
        title.Text = "Title";
        title.SetDynamicResource(Label.TextColorProperty, "textColor");
        title.SetDynamicResource(Label.BackgroundColorProperty, "backgroundColor");

现在打电话:

        App.Current.Resources["textColor"] = Color.AliceBlue;
        App.Current.Resources["backgroundColor"] = Color.BlueViolet;

以这种方式使用资源为所有控件更改属性。这适用于任何财产。

以上是关于如何在代码中分配动态资源样式?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用指针在另一个函数中分配数组

如何解决类中分配端点上的错误请求?

如何使用 Ruby 块在厨师食谱中分配变量

如何使用java代码在sp值中分配文本大小

如何在计算方法和mapState中分配数组中的动态参数

如何在 C++ 中分配一个大的动态数组?