silverlight die Bindung an eine Abhängigkeit Eigenschaft in einem benutzerdefinierten Steuerelement
Ich habe ein custom control ive erstellt, die instanziert ist in meinen Augen, in meinem custom control (ein Textfeld) habe ich eine Abhängigkeitseigenschaft festlegen, welche gebunden ist an den text-Wert, das alle arbeiten korrekt und updates. Allerdings will ich jetzt binden eine Abhängigkeitseigenschaft, der meine Ansicht zu der Abhängigkeitseigenschaft meiner Kontrolle, aber ich kann nicht ankommen dieses zu Recht. Heres, was ich meine
Steuerung ausgewählter bits
<TextBox x:Name="txtBox"
GotFocus="txtBox_GotFocus"
LostFocus="txtBox_LostFocus"
Grid.Row="0"
Text="{Binding TextValueProperty, Mode=TwoWay}"/>
public DependencyProperty TextValueProperty{ get; set; }
public int TextValue
{
get { return (int)GetValue(TextValueProperty); }
set
{
if ((value >= MinValue) && (value <= MaxValue))
{
SetValue(TextValueProperty, value);
}
}
}
public CustomControl()
{
TextValueProperty = DependencyProperty.Register("TextValueProperty ", typeof(int), typeof(CustomControl), new PropertyMetadata(null ));
}
Ansicht ausgewählten bits
<my:CustomControl x:Name="TxtBoxInt" Grid.RowSpan="2" Grid.Row="0" Grid.Column="1"/>
Ich dies tun möchten:
<my:CustomControlx:Name="TxtBoxInt" TextValueProperty="{Binding DestinationProperty}" Grid.RowSpan="2" Grid.Row="0" Grid.Column="1"/>
- und Code-aus der Sicht
public DependencyProperty DestionationProperty;
public int Destination
{
get
{
return (int)GetValue(DestionationProperty);
}
set
{
SetValue(DestionationProperty, value);
}
}
public CustomControl()
{
DestionationProperty = DependencyProperty.Register("DestionationProperty", typeof(int), typeof(CustomControl), null);
InitializeComponent();
}
Also, was muss ich tun, um in der Lage zu binden, mein int-Wert Ziel-in meiner Sicht auf den gleichen Wert haben wie meine Textwert aus meiner custom control? Danke 🙂
ps hi ash
- +1 Das ist eine gute Frage, es zeigt viele Missverständnisse und Fallstricke in einem Arbeitsgang. Es könnte einige Zeit dauern, um zu liefern eine vollständige Antwort. Eine Frage, über die Anforderungen, die Sie versuchen, zu erstellen ein Steuerelement, das ermöglicht die Eingabe von nur einer Zahl und nur eine min/Reichweite? Sie können nicht finden, eine Kontrolle in der SDK-oder Silverlight-Toolkit, wie das styling der
NumericUpDown
Kontrolle? - Dies ist sehr viel die limited version zur Festlegung der Grundlagen der einfachen Bindung mit dem Wert des Feldes. Mehr Funktionalität wird schließlich erforderlich sein, aber auch ich werde wahrscheinlich das gleiche problem haben, wenn Sie andere Steuerelemente also am besten, um dieses Problem aus dem Weg zuerst. Ich glaube, was im fehlt ist eine Eigenschaft angehoben Sachen, die ich nicht hatte kein Glück, der Umsetzung arbeiten
Du musst angemeldet sein, um einen Kommentar abzugeben.
Righty oh, ich habe jetzt eigentlich sortiert das problem und zum Wohle der anderen werde ich versuchen und notieren Sie sich, wie ich Tat das beste, ich kann ohne meinen code vor mir.
Okay also zu aller erst mein benutzerdefiniertes Steuerelement, ich war nicht die Nutzung von abhängigkeitseigenschaften richtig (haha), um mit zu beginnen. So können berichtigen, die ersten.
Durchaus ein paar änderungen gibt, beste Weg, um zu denken, es ist der Blick auf die öffentliche FieldValue das ist ein Teil des CustomControl, die verwendet GetValue und SetValue als einfach, da die Methoden für Ihre Abhängigkeitseigenschaft, wenn Sie SetValue es nutzt die Abhängigkeitseigenschaft, wenn der Wert der dependency property ruft die FieldValueChanged Methode, die Sie angegeben haben, es zu nennen, in der DependencyProperty.Register Metadaten. Diese Methode, mit der die FieldValue geändert wird, dann setzt die FieldValue in der CustomControlViewModel das set für das public int setzt den privaten Wert, dass wir Zugang zur Rückgabe der fieldvalue aber Sie bemerken auch, dass die RaisePropertyChanged("FieldValue") - Methode. Nun ist diese Methode geerbt von meiner BaseClass implementiert diese Methode, die im Grunde implementiert die INotifyPropertyChanged-Zeug. So, jetzt, wenn mein Wert ändert sich im Grunde eine Falle geschoben wird und alles was ich jetzt tun müssen, ist zu behandeln, dass die Veranstaltung aus meiner Sicht, die diese Steuerung enthält. Dieses bit ist eine einfache bit in der Constuctor
Dann eine Methode, die einfach
Dass dann updates meine FieldValue der Ansicht mit der FieldValue aus der Kontrolle, das ist bekam einige Löcher, aber es ist das beste, ich kann mich erinnern/zu erklären, hoffe, das hilft Menschen, die ich sicherlich verstehen abhängigkeitseigenschaften jetzt viel besser 🙂
Ich nehme diese Antwort als die akzeptierte Antwort, wenn ich bin wieder auf computer von morgen