85

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}";

どちらの解決策も有効ではありませんでした。

どんな助けでもいただければ幸いです:)。

4

3 に答える 3

196

コードのどこでスタイルを取得しようとしていますか?コードの背後にありますか?

あなたはこれを書くべきです:

コードビハインドを使用している場合:

Style style = this.FindResource("LabelTemplate") as Style;
label1.Style = style;

あなたがどこかにいるなら

Style style = Application.Current.FindResource("LabelTemplate") as Style;
label1.Style = style;

結論:Styleキーワードでaに名前を付けないTemplateでください。最終的には、aStyleとaTemplateを混同することになります。これらは、2つの異なる概念であるため、そうすべきではありません。

于 2012-05-21T14:18:18.477 に答える
3

nullスタイルの結果を確認してください。そうしないと、悲しくなります... ... if(style!= null)this.Style = style;

于 2014-05-09T10:23:25.643 に答える
0

古い質問かもしれませんが、W10 UWPアプリを使用する場合は、各オブジェクトのリソースコレクションまたはアプリケーションオブジェクトのリソースコレクションを使用する必要があります

KeyValuePair<object,object> styl = this.Resources
    .FirstOrDefault(x => x.Key == "MyStyleTemplateName");
if (styl.Value != null)
    Style MyStyle = (Style)styl.Value;

MyStyleTemplateNameをこのリソースとして定義する必要がある場合

于 2016-03-22T13:08:01.587 に答える