Nasıl yapılır: Uygulama Kapsamı Kaynak Sözlüğü Kullanma
Bu örnek, uygulama kapsamı özel kaynak sözlüğünün nasıl tanımlanacağını ve kullanılacağını göstermektedir.
Örnek
Application paylaşılan kaynaklar için uygulama kapsamı deposu sunar: Resources . Varsayılan olarak, Resources özelliği türünün bir örneğiyle başlatılır ResourceDictionary . Kullanarak uygulama kapsamı özelliklerini alırken ve ayarladığınızda bu örneği kullanırsınız Resources . Daha fazla bilgi için bkz. nasıl yapılır: Application-Scope kaynak alma ve ayarlama.
Kullanarak ayarladığınız birden fazla kaynağınız varsa Resources , bunun yerine bu kaynakları depolamak ve ile ayarlamak için özel bir kaynak sözlüğü kullanabilirsiniz Resources . Aşağıda, XAML kullanarak özel bir kaynak sözlüğünün nasıl bildirildiği gösterilmektedir.
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
<SolidColorBrush x:Key="StandardSolidColorBrush" Color="Blue" />
<LinearGradientBrush x:Key="StandardLinearGradientBrush" StartPoint="0.0,0.0" EndPoint="1.0,1.0">
<LinearGradientBrush.GradientStops>
<GradientStop Color="White" Offset="0" />
<GradientStop Color="Black" Offset="1" />
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
</ResourceDictionary>
Kullanarak tüm kaynak sözlüklerinin takas Resources işlemi, her temanın tek bir kaynak sözlüğü tarafından kapsüllendiği uygulama kapsamı temalarını desteketmenize olanak tanır. Aşağıdaki örnekte, nasıl ayarlanacağı gösterilmektedir ResourceDictionary .
<!--Set the Application ResourceDictionary-->
<Application.Resources>
<ResourceDictionary Source="MyResourceDictionary.xaml" />
</Application.Resources>
Aşağıda, XAML 'de tarafından sunulan kaynak sözlüğünden uygulama kapsamı kaynaklarını nasıl alabileceğiniz gösterilmektedir Resources .
<!--Set the brush as a StaticResource from the ResourceDictionary-->
<Rectangle Name="Rect" Height="200" Width="100" Fill="{StaticResource ResourceKey=StandardSolidColorBrush}" />
Ayrıca, koddaki kaynakların nasıl alınacağını aşağıda görebilirsiniz.
//Get a resource from the ResourceDictionary in code
Brush gradientBrush = (Brush)Application.Current.FindResource("StandardLinearGradientBrush");
'Get a resource from the ResourceDictionary in code
Dim GradientBrush As Brush = Application.Current.FindResource("StandardLinearGradientBrush")
Kullanırken yapmanız gereken iki önemli noktalar vardır Resources . İlk olarak, sözlük anahtarı bir nesnedir, bu nedenle her ikisi de bir özellik değeri ayarlarken ve alırken tam olarak aynı nesne örneğini kullanmanız gerekir. (Bir dize kullanılırken anahtarın büyük/küçük harfe duyarlı olduğunu unutmayın.) İkincisi, sözlük değeri bir nesnedir, bu nedenle bir özellik değeri alırken değeri istenen türe dönüştürmeniz gerekir.
Bazı kaynak türleri, ve türleri gibi açık bir anahtar olarak türü tarafından tanımlanan bir özelliği otomatik olarak kullanabilir StyleDataTemplate . Bu değer, değeri geçersiz kılabilir x:Key . x:KeyAnahtarınızın açık olduğundan emin olmak için, bunu açık anahtar özelliğinden önce bildirin. Daha fazla bilgi için bkz. Stiller, veri şablonları ve örtük anahtarlar.