Servus,
Ich habe drei Properties:
private bool _ShowEllipse;
public bool ShowEllipse
{
get { return _ShowEllipse; }
set { SetProperty(ref _ShowEllipse, value); }
}
private bool _ShowRectangle;
public bool ShowRectangle
{
get { return _ShowRectangle; }
set { SetProperty(ref _ShowRectangle, value); }
}
private bool _ShowPath;
public bool ShowPath
{
get { return _ShowPath; }
set { SetProperty(ref _ShowPath ,value); }
}
Es darf immer nur eine dieser Properties true sein. Nun habe ich zwei Möglichkeiten:
switch (overlay.Type)
{
case OverlayType.Ellipse:
ShowEllipse = true;
ShowRectangle = false;
ShowPath = false;
break;
case OverlayType.Rectangle:
ShowEllipse = false;
ShowRectangle = true;
ShowPath = false;
break;
case OverlayType.Path:
ShowEllipse = false;
ShowRectangle = false;
ShowPath = true;
break;
default:
break;
}
-> Würde das hier gern schöner formatieren, aber es wird leider nicht richtig übernommen...
Beide Ansätze wirken nicht wirklich elegant, gibt es noch andere Möglichkeiten das Problem zu lösen?
Danke schonmal!
Kriz
Warum überhaupt 3 Eigenschaften, wenn du doch schon den OverlayType
hast?
Zitat von Th69
Warum überhaupt 3 Eigenschaften, wenn du doch schon den
OverlayType
hast?
Ich habe in einem MAUI Projekt drei verschiedene Controls von denen nur eins angezeigt werden darf. Das steuer ich über die IsVisible-Property. So brauche ich dann für jedes Conntrol eine eine IsVisible-Property zum Binden.
WÄre es nicht einfacher so?
public bool ShowEllipse => overlay.Type == OverlayType.Ellipse;
public bool ShowRectangle => overlay.Type == OverlayType.Rectangle;
public bool ShowPath => overlay.Type == OverlayType.Path;
und immer wenn sich in overlay
die Eigensschaft Type
ändert, dann folgenden Code noch ausführen
OnPropertyChanged(nameof(ShowEllipse));
OnPropertyChanged(nameof(ShowERectangle));
OnPropertyChanged(nameof(ShowPath));
Alternativ gäbe es auch noch diesen EnumToBoolConverter
aus dem CommunityToolkit
Hat die Blume einen Knick, war der Schmetterling zu dick.
Zitat von Kriz
-> Würde das hier gern schöner formatieren, aber es wird leider nicht richtig übernommen...
Du hast für deinen Code(-Block) die Code Formatierung verwendet und nicht den direkt daneben liegenden Button für Code-Block einfügen.
Mit Code-Block einfügen sieht das dann so aus:
switch (overlay.Type)
{
case OverlayType.Ellipse:
ShowEllipse = true;
ShowRectangle = false;
ShowPath = false;
break;
case OverlayType.Rectangle:
ShowEllipse = false;
ShowRectangle = true;
ShowPath = false;
break;
case OverlayType.Path:
ShowEllipse = false;
ShowRectangle = false;
ShowPath = true;
break;
default:
break;
}
Die Code Formatierung verwendest du, wenn du im Text etwas als Code formatieren möchtest, wie z.B. den Typen string
oder deinen overlay.Type
.
Hab es angepasst.
Hat die Blume einen Knick, war der Schmetterling zu dick.