Forum: PC-Programmierung Dependencyproperty Reflection PropertyName auslesen


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von guelay (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe folgendes Codebespiel:

WPF:
<example:ViewModelControl Example="{Binding Start}"
          .... />

C#:
public class ViewModelControl : ContentControl
{

public static readonly DependencyProperty ExampleProperty = 
DependencyProperty.Register (
      nameof (Example), typeof (ExampleViewModel), typeof 
(ViewModelControl ), new 
FrameworkPropertyMetadata(default(ExampleViewModel), 
ExamplePropertyChanged) { BindsTwoWayByDefault = true});

    public ExampleViewModel Example
    {
      get => (ExampleViewModel )GetValue (ExampleProperty );
      set => SetValue (ExampleProperty , value);
    }
}
.....
public async Task AddCommandExecuteAsync(object arg){

hier!!!!

}

Die Frage ist ich möchte in AddCommandExecuteAsync per Reflection oder 
ähnliches den Namen "Start" auslesen (siehe Binding object WPF). Ist das 
möglich und wie geht das ?

Gruß

von Hanspeter (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Wenn es nicht ein Uralt-.NET ist, geht wahrscheinlich das:
BindingExpression t = this.GetBindingExpression(ViewModelControl.ExampleProperty);
string s = t.ResolvedSourcePropertyName;

"s" enthält dann den Namen "Start". Ob das auch funktioniert, wenn das 
Property nicht existiert oder der DataContext nicht da ist, weiss ich 
gerade nicht. Auch bei PropertyPaths weiss ich gerade nicht bescheid. 
Ausprobieren...

von guelay (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hanspeter schrieb:
> Wenn es nicht ein Uralt-.NET ist, geht wahrscheinlich das:
> BindingExpression t =
> this.GetBindingExpression(ViewModelControl.ExampleProperty);
> string s = t.ResolvedSourcePropertyName;
>
> "s" enthält dann den Namen "Start". Ob das auch funktioniert, wenn das
> Property nicht existiert oder der DataContext nicht da ist, weiss ich
> gerade nicht. Auch bei PropertyPaths weiss ich gerade nicht bescheid.
> Ausprobieren...

Hat funktioniert. Danke

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.