StaticResource vs. DynamicResource

  • 342
  • 0

摘要:StaticResource vs. DynamicResource

翻譯自:http://www.codeproject.com/Articles/393086/WPF-StaticResource-vs-DynamicResource

 

簡單地說,

StaticResource 呼叫第一次物件,就一直使用到結束,DynamicResource 則是物件每用到一次就去取得一次。

因此 DynamicResource 會比較耗資源。

 

若以 static 方式呼叫,需先在 XAML 裡面定義好,之後才呼叫的到,例:


<Window.Resources>
    <RadialGradientBrush x:Key="myGradientBrush">
        <GradientStop Color="Green" Offset="0"/>
        <GradientStop Color="Blue" Offset="2"/>
    </RadialGradientBrush>
</Window.Resources>

 

先定義好之後,就可以 static 的方式去呼叫:


<Grid Background="{StaticResource myGradientBrush}"></Grid>

 

或是以 dynamic 的方式呼叫:


<Grid Background="{DynamicResource myGradientBrush}"></Grid>

 

若是以 dynamic 的方式呼叫,之後就可以像下面這樣,在 C# code 去改變其內容,


RadialGradientBrush radialGradientBrush = new RadialGradientBrush( Colors.Orange, Colors.Pink);
this.Resources["myGradientBrush"] = radialGradientBrush;