KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I've written a Markup extension for WPF that allows me to do <!-- Generic Styles --> <Style x:Key="bold" TargetType="Label"> <Setter Property="FontWeight" Value="ExtraBold" /> </Style> <Style x:Key="italic" TargetType="Label"> <Setter Property="FontStyle" Value="Italic" /> </Style> <Style x:Key="gridHeader" TargetType="Label" BasedOn="{WPF:CombiStyle bold italic }" > It is a very usefull extension and it works great at runtime. However at design time I can't see the styles applied or that if I mistype bold and italic they might not be found as StaticResources. Any hacks I can do to get this working? The source code for the extension is using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Markup; namespace MarkupExtensions { [MarkupExtensionReturnType(typeof(Style))] public class CombiStyleExtension : MarkupExtension { private string[] MergeStyleProviders { get; set; } public CombiStyleExtension(string s0) { MergeStyleProviders = s0.Split(new[]{' '}); } public override object ProvideValue(IServiceProvider serviceProvider) { return MergeStyleProviders .Select(x => StringToStyle(serviceProvider, x)) .Aggregate(new Style(), RecursivelyMergeStyles); } private static Style StringToStyle(IServiceProvider serviceProvider, string x) { var style = new StaticResourceExtension() { ResourceKey = x }.ProvideValue(serviceProvider) as Style; if (style==null) { throw new ArgumentException("Argument could not be converted to a style"); } return style; } private static S
Tags (comma-separated)
Save Edits
Cancel