public override object ProvideValue(IServiceProvider serviceProvider)
        {
            Style result = new Style();

            foreach (var styleKey in m_stylesKeys)
            {
                Style style = (Style)new StaticResourceExtension(styleKey).ProvideValue(serviceProvider);

                if (style == null) new ArgumentException(styleKey + " not found");

                result.Merge(style);
            }

            return result;
        }
 /// <summary>
 /// Returns a style that merges all styles with the keys specified in the constructor.
 /// </summary>
 /// <param name="serviceProvider">The service provider for this markup extension.</param>
 /// <returns>A style that merges all styles with the keys specified in the constructor.</returns>
 public override object ProvideValue(IServiceProvider serviceProvider)
 {
     Style resultStyle = new Style();
     foreach(string currentResourceKey in resourceKeys) {
         object key = currentResourceKey;
         if(currentResourceKey == ".") {
             IProvideValueTarget service = (IProvideValueTarget)serviceProvider.GetService(typeof(IProvideValueTarget));
             key = service.TargetObject.GetType();
         }
         Style currentStyle = new StaticResourceExtension(key).ProvideValue(serviceProvider) as Style;
         if(currentStyle == null)
             throw new InvalidOperationException("Could not find style with resource key " + currentResourceKey + ".");
         resultStyle.Merge(currentStyle);
     }
     return resultStyle;
 }