WPF liaison de données zone de texte entier de la propriété d'un autre objet
J'ai ce que je pense est très liaison de données simple question (je suis encore nouveau pour WPF).
J'ai une classe (simplifié pour cette question)
public class ConfigurationData
{
public int BaudRate { get; set; }
}
Dans MainWindow.Xaml.cs, j'ai une variable membre privée:
private ConfigurationData m_data;
et une méthode
void DoStuff()
{
//do a bunch of stuff (read serial port?) which may result in calling...
m_data.BaudRate = 300; //or some other value depending on logic
}
Dans ma MainWindow gui, j'aimerais avoir une zone de texte qui affiche m_data.Le débit en bauds ET permet une liaison bidirectionnelle. L'utilisateur doit être en mesure d'entrer une valeur dans la zone de texte, et la zone de texte doit afficher les nouvelles valeurs qui nous sont causés par des "DoStuff()" la méthode. J'ai vu des tonnes d'exemples sur la liaison à une autre propriété d'un contrôle sur MainWindow, et la liaison à une données, mais pas d'exemples de liaison à une propriété d'un autre objet. Je pense que mon exemple est à peu près aussi simple que d'obtenir, avec ce sentiment d'ennui que je suis de liaison à un entier, pas une chaîne de caractères, et si possible, j'aimerais que l'utilisateur ne soit en mesure de saisir des nombres entiers.
BTW, j'ai envisagé d'utiliser un numérique, haut/bas, mais a décidé contre elle comme il ne semble pas y avoir beaucoup de soutien/des exemples de non-commerciaux numérique commandes haut/bas. De Plus, il pourrait être une très grande gamme de nombres de tourner à travers.
Je pense qu'un pointeur vers un bon exemple serait me faire à ma façon.
Merci beaucoup à l'avance,
Dave
Cela ne fonctionne pas (coloration erreur) <TextBox Text="{Binding Source={m_data}, Path=Débit en bauds}" Height="23" Margin="137,70,21,0" Name="textBox1" VerticalAlignment="Top" /> j'ai fait voir que l'on peut installer une "ressource" dans le code Xaml. Cela semble être trop pour moi. Je ne peux pas juste faire inline en quelque sorte? C'est seulement une fois que je suis va se lier à m_data. De côté: Est-il possible de formater le code ou utiliser la touche de retour dans les commentaires 🙂 ?
Je voulais juste de noter que les valeurs numériques de haut en bas (ou spinner) de contrôle permet également à la prévention du non-numérique d'entrée de clavier et min/max validations, non seulement le réel de la filature de nombres. Je pense qu'il y a un Sac de Trucs qui fait le travail décemment (vous avez seulement besoin de style correctement).
Merci pour le commentaire d'Alex. Malheureusement, j'ai vu votre commentaire au travail où l'on utilise Visual Studio 2008 (soupir). Le "Sac à malices" (github.com/thinkpixellab/bot c'est ce que j'ai vu) semble être la seule à avoir le code Visual Studio 2010. Je vais le regarder à la maison.
OriginalL'auteur Dave | 2010-10-07
Vous devez vous connecter pour publier un commentaire.
Je pense que ça va vous aider à http://blogs.msdn.com/b/wpfsdk/archive/2006/10/19/wpf-basic-data-binding-faq.aspx
OriginalL'auteur Mediator
Bien que cette question est ancienne, elle est bien bonne, et est rarement répondu succinctement. Permettez-moi d'offrir une solution simplifiée pour les autres qui viennent sur cette page.
Afin de soutenir la liaison bidirectionnelle, votre initiale
ConfigurationData
classe doit être étendue pour prendre en charge les modifications de propriété. Sinon, les changements dansDoStuff()
ne sera pas reflétée dans l'INTERFACE utilisateur de la zone de texte. Ici est typique de la façon de le faire:Je choisir de placer la zone de texte de liaison à droite dans le code XAML (j'ai aussi ajouté un bouton pour DoStuff), comme suit:
La partie la plus délicate est le collage de tout cela ensemble. Pour cela, vous aurez besoin de définir votre DataContext. Je préfère le faire dans le constructeur de ma fenêtre principale. Voici le code:
OriginalL'auteur kmote
Je suis sûr qu'il ya une meilleure façon (s'il vous plaît dites-moi!), mais voici une façon j'ai bricolé qui fonctionne. Il semble qu'il devrait y avoir un moyen plus facile.
Pour le bien BaudRate utilisation:
Pour le XAML, je n'ai pas significative balisage:
Maintenant, c'est le désordre de la partie... Créer une classe pour la validation:
Et puis dans le constructeur de Window1 (MainWindow):
Toutes mes tentatives de faire tout dans le balisage a échoué. Meilleures façons?
Dave
OriginalL'auteur Dave