Question
WPF/PS - Textbox
- Guillaume
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 116
- Remerciements reçus 0
il y a 8 ans 10 mois #23909
par Guillaume
WPF/PS - Textbox a été créé par Guillaume
Bonjour,
Avec les WinForms, quand on a une textbox dans laquelle on veut ajouter du texte on fait :
[code:1]$textbox.Text = \"Exemple\"[/code:1]
ou pour en ajouter :
[code:1]$textbox.text.AppendText(\"Exemple 2\"«»)[/code:1]
Quand je fais la même chose avec du WPF/XAML, ça ne fonctionne pas...
XAML
[code:1]<TextBox Name=\"AU_Champ_resultats\" HorizontalAlignment=\"Left\" Height=\"532\" Margin=\"10,215,0,0\" TextWrapping=\"Wrap\" VerticalAlignment=\"Top\" Width=\"966\" FontWeight=\"Normal\" IsReadOnly=\"False\"/>[/code:1]
PS
[code:1]# VARIABLES
$AU_Bouton_Retour_Menu = $Affichage.FindName(\"AU_Bouton_Retour_Menu\"«»)
$AU_Champ_Resultats = $Affichage.FindName(\"AU_Champ_Resultats\"«»)[/code:1]
# ACTION
[code:1]$AU_Champ_Resultats.Text = \"OK !\"[/code:1]
Et j'ai ça :
Comment dois-je faire pour écrire du texte prédéfini dans cette textbox ?
Merci par avance.
Avec les WinForms, quand on a une textbox dans laquelle on veut ajouter du texte on fait :
[code:1]$textbox.Text = \"Exemple\"[/code:1]
ou pour en ajouter :
[code:1]$textbox.text.AppendText(\"Exemple 2\"«»)[/code:1]
Quand je fais la même chose avec du WPF/XAML, ça ne fonctionne pas...
XAML
[code:1]<TextBox Name=\"AU_Champ_resultats\" HorizontalAlignment=\"Left\" Height=\"532\" Margin=\"10,215,0,0\" TextWrapping=\"Wrap\" VerticalAlignment=\"Top\" Width=\"966\" FontWeight=\"Normal\" IsReadOnly=\"False\"/>[/code:1]
PS
[code:1]# VARIABLES
$AU_Bouton_Retour_Menu = $Affichage.FindName(\"AU_Bouton_Retour_Menu\"«»)
$AU_Champ_Resultats = $Affichage.FindName(\"AU_Champ_Resultats\"«»)[/code:1]
# ACTION
[code:1]$AU_Champ_Resultats.Text = \"OK !\"[/code:1]
Et j'ai ça :
La propriété « Text » est introuvable dans cet objet. Vérifiez qu’elle existe et qu’elle peut être définie.
Au caractère C:\Users\g.fombonne\Documents\Administration\Powershell\Administration\Gestion_WPF.ps1:165 : 1
+ $AU_Champ_Resultats.Text = \"OK !\"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation : ( : ) [], RuntimeException
+ FullyQualifiedErrorId : PropertyNotFound
Comment dois-je faire pour écrire du texte prédéfini dans cette textbox ?
Merci par avance.
Connexion ou Créer un compte pour participer à la conversation.
- Guillaume
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 116
- Remerciements reçus 0
il y a 8 ans 10 mois #23910
par Guillaume
Réponse de Guillaume sur le sujet Re:WPF/PS - Textbox
Bon, je pense que j'ai pigé...
TextBox Name=\"AU_Champ_resultats\"
$AU_Champ_Resultats = $Affichage.FindName(\"AU_Champ_Resultats\")
A priori, si quelqu'un peut le confirmer, il faut respecter la casse. Maintenant ça marche.
TextBox Name=\"AU_Champ_resultats\"
$AU_Champ_Resultats = $Affichage.FindName(\"AU_Champ_Resultats\")
A priori, si quelqu'un peut le confirmer, il faut respecter la casse. Maintenant ça marche.
Connexion ou Créer un compte pour participer à la conversation.
- Marc
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 90
- Remerciements reçus 0
il y a 8 ans 10 mois #23911
par Marc
Réponse de Marc sur le sujet Re:WPF/PS - Textbox
Salut,
oui findname est case sensitive.
Moi j'aime bien utiliser le parsing des conteneur, on peux retrouver un objet avec n'importe laquelle de ses propriété.
Exemple avec une Grid:
[code:1]
[xml]$xaml = @\"
<Window
xmlns=\"schemas.microsoft.com/winfx/2006/xaml/presentation\"
xmlns:«»x=\"schemas.microsoft.com/winfx/2006/xaml\"
x:Name=\"Window\" Title=\"Initial Window\" WindowStartupLocation = \"CenterScreen\"
Width = \"200\" Height = \"200\" ShowInTaskbar = \"True\">
<Grid x:Name=\"GeneralGrid\">
<TextBox x:Name=\"TextBox1\" HorizontalAlignment=\"Left\" Height=\"23\" Margin=\"10,101,0,0\" TextWrapping=\"Wrap\" Text=\"TextBox\" VerticalAlignment=\"Top\" Width=\"120\"/>
<Grid x:Name=\"GridCheckBox\" HorizontalAlignment=\"Left\" Height=\"59\" Margin=\"10,37,0,0\" VerticalAlignment=\"Top\" Width=\"92\">
<CheckBox x:Name=\"CheckBox1\" Content=\"CheckBox1\" HorizontalAlignment=\"Left\" Margin=\"8,7,0,0\" VerticalAlignment=\"Top\" IsEnabled=\"False\"/>
<CheckBox x:Name=\"CheckBox2\" Content=\"CheckBox2\" HorizontalAlignment=\"Left\" Margin=\"8,30,0,0\" VerticalAlignment=\"Top\" IsEnabled=\"False\"/>
</Grid>
</Grid>
</Window>
\"@
$reader = (New-Object System.Xml.XmlNodeReader $xaml)
$windows = [windows.markup.Xamlreader]::Load($reader)
#Avec FinName je charge mes grid
$GeneralGrid = $windows.FindName(\"GeneralGrid\"«»)
$GridCheckBox = $windows.FindName(\"GridCheckBox\"«»)
#Avec Where-Object je parse ma GeneralGrid pour trouver ma textbox et lui affecter \"coucou\"
($GeneralGrid.Children|where{$_.name -eq \"TextBox1\"}).text = \"coucou\"
#ou encore je cherche mes CheckBox et les active
$GridCheckBox.Children|where{$_ -is [System.Windows.Controls.Primitives.ToggleButton]}|Foreach{$_.Isenabled = $true}
$windows.showdialog()
[/code:1]
Cela peut paraitre moins pratique que FindName mais au fils du temps on se rend compte que pas du tout surtout quand on doit agir sur plusieurs objets.
oui findname est case sensitive.
Moi j'aime bien utiliser le parsing des conteneur, on peux retrouver un objet avec n'importe laquelle de ses propriété.
Exemple avec une Grid:
[code:1]
[xml]$xaml = @\"
<Window
xmlns=\"schemas.microsoft.com/winfx/2006/xaml/presentation\"
xmlns:«»x=\"schemas.microsoft.com/winfx/2006/xaml\"
x:Name=\"Window\" Title=\"Initial Window\" WindowStartupLocation = \"CenterScreen\"
Width = \"200\" Height = \"200\" ShowInTaskbar = \"True\">
<Grid x:Name=\"GeneralGrid\">
<TextBox x:Name=\"TextBox1\" HorizontalAlignment=\"Left\" Height=\"23\" Margin=\"10,101,0,0\" TextWrapping=\"Wrap\" Text=\"TextBox\" VerticalAlignment=\"Top\" Width=\"120\"/>
<Grid x:Name=\"GridCheckBox\" HorizontalAlignment=\"Left\" Height=\"59\" Margin=\"10,37,0,0\" VerticalAlignment=\"Top\" Width=\"92\">
<CheckBox x:Name=\"CheckBox1\" Content=\"CheckBox1\" HorizontalAlignment=\"Left\" Margin=\"8,7,0,0\" VerticalAlignment=\"Top\" IsEnabled=\"False\"/>
<CheckBox x:Name=\"CheckBox2\" Content=\"CheckBox2\" HorizontalAlignment=\"Left\" Margin=\"8,30,0,0\" VerticalAlignment=\"Top\" IsEnabled=\"False\"/>
</Grid>
</Grid>
</Window>
\"@
$reader = (New-Object System.Xml.XmlNodeReader $xaml)
$windows = [windows.markup.Xamlreader]::Load($reader)
#Avec FinName je charge mes grid
$GeneralGrid = $windows.FindName(\"GeneralGrid\"«»)
$GridCheckBox = $windows.FindName(\"GridCheckBox\"«»)
#Avec Where-Object je parse ma GeneralGrid pour trouver ma textbox et lui affecter \"coucou\"
($GeneralGrid.Children|where{$_.name -eq \"TextBox1\"}).text = \"coucou\"
#ou encore je cherche mes CheckBox et les active
$GridCheckBox.Children|where{$_ -is [System.Windows.Controls.Primitives.ToggleButton]}|Foreach{$_.Isenabled = $true}
$windows.showdialog()
[/code:1]
Cela peut paraitre moins pratique que FindName mais au fils du temps on se rend compte que pas du tout surtout quand on doit agir sur plusieurs objets.
Connexion ou Créer un compte pour participer à la conversation.
- Guillaume
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 116
- Remerciements reçus 0
il y a 8 ans 10 mois #23922
par Guillaume
Réponse de Guillaume sur le sujet Re:WPF/PS - Textbox
Merci pour le conseil, je vais essayer de voir ça dans un second temps
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.045 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- WPF/PS - Textbox