App.xamlには、次のコードがあります。
<Application.Resources>
<Style x:Key="LabelTemplate" TargetType="{x:Type Label}">
<Setter Property="Height" Value="53" />
<Setter Property="Width" Value="130" />
<Setter Property="HorizontalAlignment" Value="Left" />
<Setter Property="Margin" Value="99,71,0,0" />
<Setter Property="VerticalAlignment" Value= "Top" />
<Setter Property="Foreground" Value="#FFE75959" />
<Setter Property="FontFamily" Value="Calibri" />
<Setter Property="FontSize" Value="40" />
</Style>
</Application.Resources>
これは、ラベルの汎用テンプレートを提供するためのものです。
メインのXAMLコードには、次のコード行があります。
<Label Content="Movies" Style="{StaticResource LabelTemplate}" Name="label1" />
ただし、コードを使用してStyleプロパティを初期化します。私が試してみました:
label1.Style = new Style("{StaticResource LabelTemplate}");
そして
label1.Style = "{StaticResource LabelTemplate}";
どちらのソリューションも有効ではありませんでした。
助けていただければ幸いです:)。
コードのどこでスタイルを取得しようとしていますか?コードビハインド?
これを書くべきです:
コードビハインドの場合:
Style style = this.FindResource("LabelTemplate") as Style;
label1.Style = style;
他の場所にいる場合
Style style = Application.Current.FindResource("LabelTemplate") as Style;
label1.Style = style;
下の注:キーワードStyle
でTemplate
に名前を付けないでください。最終的にStyle
とTemplate
を混同することになります。
Nullスタイルの結果を確認してください。さもないと悲しいことになります... ... if(style!= null)this.Style = style;
古い質問かもしれませんが、W10 UWPアプリを試す場合は、各オブジェクトのリソースコレクションまたはアプリケーションオブジェクトのリソースコレクションを使用する必要があります
KeyValuePair<object,object> styl = this.Resources
.Where(x => x.Key.ToString() == "MyStyleTemplateName")
.FirstOrDefault();
if (styl.Value != null)
Style MyStyle = (Style)styl.Value;
MyStyleTemplateNameはthisのリソースとして定義する必要があります