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;
この方法でリソースを使用するすべてのコントロールのプロパティを変更します。これはどのプロパティでも機能するはずです。