Pilz.UI aktualisieren
72
Pilz.UI.md
72
Pilz.UI.md
@@ -102,3 +102,75 @@ Ensure you unregister your handlers from the event on Dispose or deconstructor!
|
|||||||
DialogBase.DialogClosed -= DialogBase_DialogClosed;
|
DialogBase.DialogClosed -= DialogBase_DialogClosed;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
# Symbols
|
||||||
|
|
||||||
|
## Setup SymbolFactory
|
||||||
|
|
||||||
|
Create a new directory, we call it `Symbols` here.
|
||||||
|
|
||||||
|
{width=188 height=275}
|
||||||
|
|
||||||
|
Ensure you add this to the project file. This will mark all PNG files within the Symbols folder as embedded resource.
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<ItemGroup>
|
||||||
|
<EmbeddedResource Include="Symbols\*.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
```
|
||||||
|
|
||||||
|
Create a new enum. It may look like the following. Ensure you only add new values to the buttom as you will introduce a breaking change to your API otherwise.
|
||||||
|
|
||||||
|
```csharp
|
||||||
|
public enum GlobalSymbols
|
||||||
|
{
|
||||||
|
add,
|
||||||
|
administrative_tools,
|
||||||
|
billboard,
|
||||||
|
cancel,
|
||||||
|
delete,
|
||||||
|
edit,
|
||||||
|
home,
|
||||||
|
login,
|
||||||
|
logout,
|
||||||
|
product,
|
||||||
|
project,
|
||||||
|
remove,
|
||||||
|
save,
|
||||||
|
settings,
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
The class `GlobalsymbolFactory` need to inherit from `SymbolFactory<>`. Provide your symbols enum here. You will need to overwrite `GetImageResourceAssembly` and `GetImageRessourcePath` as this parts can't be done by the base class.
|
||||||
|
|
||||||
|
```csharp
|
||||||
|
public class GlobalSymbolFactory : SymbolFactory<GlobalSymbols>
|
||||||
|
{
|
||||||
|
private static readonly string? symbolsNamespace = typeof(GlobalSymbolFactory).Namespace + ".Symbols";
|
||||||
|
private static readonly string symbolsPathTemplate = "{0}.{1}.png";
|
||||||
|
|
||||||
|
public override Assembly GetImageResourceAssembly()
|
||||||
|
{
|
||||||
|
return Assembly.GetExecutingAssembly();
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string GetImageRessourcePath(GlobalSymbols svgImage)
|
||||||
|
{
|
||||||
|
return string.Format(symbolsPathTemplate, symbolsNamespace, svgImage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Access symbols
|
||||||
|
|
||||||
|
Accessing symbols esaily via an instance of your SymbolFactory implementation. You can either provide a static instance in `GlobalSymbolFactory` or create a new instance wherever you need it. Access via `GetImage`, decide wheneer you can use an `Image`.
|
||||||
|
|
||||||
|
```csharp
|
||||||
|
// Static instance in GlobalSymbolFactory
|
||||||
|
public static ISymbolFactory<GlobalSymbols> Instance { get; } = new GlobalSymbolFactory();
|
||||||
|
var img = GlobalSymbolFactory.Instance.GetImage(GlobalSymbols.billboard, SymbolSize.Default);
|
||||||
|
|
||||||
|
// Instance on-demand
|
||||||
|
var symbols = new GlobalSymbolFactory();
|
||||||
|
var img = symbols.GetImage(GlobalSymbols.billboard, SymbolSize.Default);
|
||||||
|
```
|
||||||
|
|||||||
Reference in New Issue
Block a user