C-Sharp WPF Controls und Extensions
Hallo @ All!
Ich komme bei einem Problem nicht weiter:
Ich habe ein C# WPF Window mit einem Label und 2 Buttons (Weiter und Zurück). Mit dem Buttons möchte ich das Margin des Labels verändern.
z.B. von:
auf
Nun dachte ich, es wäre doch einfacher eine Extension dafür zu basteln, welche ich dann einfach so aufrufen könnte:
label_myLabel.newMargin("50,20,0,0");
Leider funkt das nicht so wie ich will. Die Extension wird mir in meiner Methode nicht angezeigt.
Hier der Code der Extension:
Ich bin mir sicher es geht noch was. Nur was könnte das sein? hat jemand einen Tipp?
Danke für die Unterstützung!
Mayho
Ich komme bei einem Problem nicht weiter:
Ich habe ein C# WPF Window mit einem Label und 2 Buttons (Weiter und Zurück). Mit dem Buttons möchte ich das Margin des Labels verändern.
z.B. von:
1
label_myLabel.Margin = new Thickness(10,20,0,0);
auf
1
label_myLabel.Margin = new Thickness(50,60,0,0);
Nun dachte ich, es wäre doch einfacher eine Extension dafür zu basteln, welche ich dann einfach so aufrufen könnte:
label_myLabel.newMargin("50,20,0,0");
Leider funkt das nicht so wie ich will. Die Extension wird mir in meiner Methode nicht angezeigt.
Hier der Code der Extension:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public static class Extensions
{
public static bool SetMargin(this String newMargin))
{
bool toReturn = false;
var control = new StackTrace().GetFrame(1).GetMethod();
string cm = newMargin.Split(',');
try
{
if (control.GetType() == typeof(Label))
currentLabel.Margin = new Thickness(Convert.ToDouble(cm), Convert.ToDouble(cm[1]), Convert.ToDouble(cm[2]), Convert.ToDouble(cm[3]));
}
catch (Exception e)
{
toReturn = false;
}
return toReturn;
}
}
Ich bin mir sicher es geht noch was. Nur was könnte das sein? hat jemand einen Tipp?
Danke für die Unterstützung!
Mayho
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 315245
Url: https://administrator.de/forum/c-sharp-wpf-controls-und-extensions-315245.html
Ausgedruckt am: 16.04.2025 um 16:04 Uhr
3 Kommentare
Neuester Kommentar

Hi,
you have to inherit from the wpf label class, then you can override or add new methods available on your labels.
https://social.msdn.microsoft.com/Forums/vstudio/en-US/8bcfeb09-aff6-4b2 ...
Regards
you have to inherit from the wpf label class, then you can override or add new methods available on your labels.
https://social.msdn.microsoft.com/Forums/vstudio/en-US/8bcfeb09-aff6-4b2 ...
Regards
Hi,
entweder leitest Du wie highload schrieb eine Klasse von Label ab oder du gehst den von Dir angedachten Weg der Extension-Methods. Für letzteres sähe der Code wie folgt aus:
Aufgerufen wird das ganze dann so:
Durch "this Label label" werden zwei Dinge erreicht:
entweder leitest Du wie highload schrieb eine Klasse von Label ab oder du gehst den von Dir angedachten Weg der Extension-Methods. Für letzteres sähe der Code wie folgt aus:
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
public static class Extensions
{
public static void SetMargin(this Label label, string margin)
{
string cm = margin.Split(',');
label.Margin = new Thickness(Convert.ToDouble(cm), Convert.ToDouble(cm[1]), Convert.ToDouble(cm[2]), Convert.ToDouble(cm[3]));
}
}
Aufgerufen wird das ganze dann so:
1
label_myLabel.SetMargin("50,20,0,0");
Durch "this Label label" werden zwei Dinge erreicht:
- die Methode ist nur mit Labels verwendbar, anderenfalls schmeisst der Compiler einen Fehler
- "label" ist dann immer das Label für das du die Methode aufgerufen hast, das Suchen und casten des Controls fällt somit weg