简体   繁体   中英

Find resource from Generic.xaml programmatically

I am trying to implement Style Binding from this article in WPF & Silverlight .

I have a resource dictionary, generic.Xaml with this code:

<ResourceDictionary 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

   <ResourceDictionary.MergedDictionaries>
       <ResourceDictionary Source="/AComponent;component/Themes/MyCustomStyles.xaml" />
   </ResourceDictionary.MergedDictionaries>

Where MyCustomStyles.xaml begins like this

<ResourceDictionary 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

   <t:ThemeColorProvider x:Key="ThemeProvider"/>

I need to get the instance of ThemeProvider to update colors/brushes that I am binding to in Generic.xaml. Is it possible to get the instance of the resource keyed "ThemeProvider" so I can update it?

Extra credit if you know a cross platform WPF & Silverlight implementation!

Note: I need to get this outside of the assembly that declares Generic.xaml

If your resource is defined in generic.xaml or any resource that is defined in MergedDictionaries in App.xaml then you need to use Application.Current.Resources, eg:

BackgroundColor = (Color)Application.Current.Resources["ApplicationBarBackgroundColor"]

This may help:

ThemeColorProvider value= (ThemeColorProvider)FindResource("ThemeProvider");
// update value

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM