0

Wie erweitere ich ein vorhandenes Steuerelement (ComboBox in meinem Fall), um eine neue Eigenschaft aufzunehmen, die ich an eine Eigenschaft in meinem Ansichtsmodell binden kann?Binden neuer Eigenschaft auf Custom Control zum Anzeigen von Modell

Ich habe einen Dependancy Property auf die Klasse des Steuer wie folgt:

public class MyComboBox : ComboBox 
{ 
    public static readonly DependencyProperty MyTextProperty = 
     DependencyProperty.Register("MyText", typeof(string), typeof(MyComboBox)); 

    public string MyText 
    { 
     get 
     { 
      return GetValue(MyComboBox.MyTextProperty).ToString(); 
     } 

     set 
     { 
      SetValue(MyComboBox.MyTextProperty, value);    
     } 
    } 

Und daran binden wollen deklarativ von XAML wie folgt aus:

<MyComboBox MyText="{Binding MyTextOnViewModel, 
    UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"/> 

The Binding einfach nicht funktionieren, irgendwelche Ideen warum?

Danke.

Antwort

2

Ihre Getter- und Setter-Referenz TestTextProperty, während die Eigenschaft als MyTextProperty deklariert ist.

Ihr Getter sollte auch statt Aufruf .ToString()

return (string)GetValue(MyTextProperty); 

werden Gießen dieses page finden Sie weitere vollständige Anweisungen.

+0

Ihre ersten Punkte ein Tippfehler, sorry, krank überprüfen Sie den Rest jetzt – andrej351

+0

ok alles gut. danke für den hilfe mann, aber ich hatte meine benutzerdefinierte steuerung in einer zelle tamplate in einem datagrid, die ich vergessen zu erwähnen. Die Bindung wurde geändert in {Binding DataContext.MyTextOnViewModel, RelativeSource = {RelativeSource FindAncestor, AncestorType = {x: Seiten eingeben: MeineSeite}}} – andrej351