How do I inherit from Brush, so I can add a Name property?
c#, wpf
Solution
As the compile error message says is Brush an abstract class --> you have to implement its abstract members
to let Visual Studio do all the work for you there exist a shortcut.
Select the Brush class and press Alt + Shift + F10 --> Enter the abstract class gets automatically implemented:
public class T : Brush
{
protected override Freezable CreateInstanceCore()
{
throw new NotImplementedException();
}
}
EDIT:
but this will not work with the Brush class. Visual Studio auto-implements all methods which are visible, but the Brush class defines some methods as internal abstract
i.e:
internal abstract int GetChannelCountCore();
As the Brush is defined in PresentationCore we will never be able to override the abstract method outside the assembly... --> impossible to inherit from the class
Problem
For example: ``` public class DesignerPatternBrush : Brush { public string Name { get; set; } } ``` I would like to define my own `Brush` class by adding a new property called `Name`, but there is a compiler error: error CS0534: 'Brushes.DesignerPatternBrush' does not implement inherited abstract member 'System.Windows.Freezable.CreateInstanceCore()' How can I add a `Name` property to a `Brush` type? Note this related question: How do I implement a custom Brush in WPF? It answers the question of why it is not possible to literally inherit `Brush`. But is there some other way (e.g. using an attached property) to achieve the same effect I want?