Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
[erledigt] Binding in C# Code
flacker
myCSharp.de - Member



Dabei seit:
Beiträge: 33

Themenstarter:

[erledigt] Binding in C# Code

beantworten | zitieren | melden

Hallo,

folgendes Problem:

Ich habe eine Klasse erstellt welche von der Canvas-Klasse erbt. Diese Klasse füge ich dann meiner Gui hinzu. Da ich die Width/Height Property nicht gesetzt habe, ist width = NaN. Soweit klappt alles.

Damit die Width/Height Property nun nicht NaN ist, wollte ich gern die Fensterbreite an die geerbet Weite der Klasse übergeben. Dies sieht im moment so aus :

            Binding b = new Binding();
            b.ElementName = window.Name;
            b.Path = new PropertyPath("Width");
            SetBinding(Canvas.WidthProperty, b);
Anmerkung: Das Binding findet in der Klasse statt welche von der Canvas-Klasse erbt.

Möchte ich nun auf die geerbte Weite zugreifen, ist immer noch NaN enthalten.

Woran liegt dies? Habe ich ein Fehler beim binden gemacht welche ich nicht sehe? Komme leider nicht weiter... sollte ich eine Sache gepostet habe, welche schon mehrmals gefragt wurde, dann würde ich mich über den entsprechenden Link freuen.
private Nachricht | Beiträge des Benutzers
ProGamer
myCSharp.de - Member



Dabei seit:
Beiträge: 660
Herkunft: NRW

beantworten | zitieren | melden

Morgen,

wo wird denn dein Code ausgeführt? Im Constructor (deiner Form)?
Wenn ja dann versuch es mal im Loaded-Ereignis.

Oder versuche mal dich an die ActualWidth-Eigenschaft der Form zu binden.
MfG
ProGamer
private Nachricht | Beiträge des Benutzers
flacker
myCSharp.de - Member



Dabei seit:
Beiträge: 33

Themenstarter:

beantworten | zitieren | melden

Morgen,

herzlichen dank, dies funktioniert. An die ActualWidth Eigenschaft kann man nicht binden!

Jetzt habe ich aber etwas beobachtet. Ziehe ich das Fenster am Rand größer, wird das Canvas ebenfalls vergrößert. Drücke ich jedoch auf den Maximieren Button rechts oben, bleibt das Canvas auf der aktuellen Größe welche es vor dem Maximieren hatte.

Müsste sich das Canvas nicht durch das Binding auch beim Maximieren anpassen?
private Nachricht | Beiträge des Benutzers
ProGamer
myCSharp.de - Member



Dabei seit:
Beiträge: 660
Herkunft: NRW

beantworten | zitieren | melden

Ok, sorry, hätte etwas mehr schreiben können.
ActualWidth und ActualHight sind ReadOnly DPs, somit ist ein Binding nicht möglich.
Das kann man aber mit AttachedProperties umgehen.

siehe pushing-read-only-gui-properties-back-into-viewmodel

Zu deiner anderen Frage, kann ich dir leider nichts sagen.
MfG
ProGamer
private Nachricht | Beiträge des Benutzers
flacker
myCSharp.de - Member



Dabei seit:
Beiträge: 33

Themenstarter:

beantworten | zitieren | melden

Sehr interessant. Mein Binding funktioniert aber nun mit Width/Height.

Danke für die Hilfe.

Für das Maximierungsproblem, kann mir bestimmt jemand anderes noch nen Tipp geben.
private Nachricht | Beiträge des Benutzers
xxxprod
myCSharp.de - Experte

Avatar #avatar-2329.gif


Dabei seit:
Beiträge: 1.378
Herkunft: Österreich\Wien

beantworten | zitieren | melden

Hallo flacker,

vielleicht erklärst du noch ein wenig, was du eigentlich vor hast. Wieso willst du, dass Width & Height gesetzt ist, wenn du dann eh nur die Breite und Höhe des Parents übernimmst?

Du kannst auf jeden Fall immer die aktuelle Breite und Höhe mit den Properties ActualWidth und ActualHeight auslesen. Das Setzen der eigentlichen Breite und Höhe sollte man eigentlich vermeiden und mit LayoutContainern arbeiten außer es gibt spezielle Gründe dafür.

Lg, XXX

PS: ActualWidth und ActualHeight werden auch beim Maximieren gesetzt.
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von xxxprod am .
private Nachricht | Beiträge des Benutzers
flacker
myCSharp.de - Member



Dabei seit:
Beiträge: 33

Themenstarter:

beantworten | zitieren | melden

Problem hat sich gelöst. Kann geschloßen werden. Und danke für alle Antworten

Moderationshinweis von gfoidl (28.07.2014 - 16:27)

Threads werden i.d.R. nicht geschlossen wenn sie den Regeln entsprechen. Um einen Thread als "erledigt" o.ä. zu markieren kann der Titel editiert werden. Siehe hierzu auch [Hinweis] Wie poste ich richtig? im PS.

private Nachricht | Beiträge des Benutzers