Question

Dans WPF J'essaie d'utiliser les commandes pour régler tout le contenu dans plusieurs zones de texte à la fois. Le code suivant est en mesure d'obtenir une commande sur le bouton à bascule pour exécuter pour lequel jamais textbox a une portée, mais je ne peux pas sembler obtenir la commande à exécuter pour les deux en même temps.

<StackPanel>
    <ToggleButton FocusManager.IsFocusScope="True" Command="EditingCommands.ToggleBold" Width="20" Height="20"></ToggleButton>
    <RichTextBox Width="200" Height="200">
        <RichTextBox.CommandBindings>
            <CommandBinding 
                        Command="EditingCommands.ToggleBold" 
                        Executed="CommandBinding_Executed" CanExecute="CommandBinding_CanExecute"/>
        </RichTextBox.CommandBindings>
    </RichTextBox>
    <RichTextBox Width="200" Height="200">
        <RichTextBox.CommandBindings>
            <CommandBinding 
                        Command="EditingCommands.ToggleBold" 
                        Executed="CommandBinding_Executed" CanExecute="CommandBinding_CanExecute"/>
        </RichTextBox.CommandBindings>
    </RichTextBox>
</StackPanel>

Private Sub CommandBinding_Executed(ByVal sender As System.Object, ByVal e As System.Windows.Input.ExecutedRoutedEventArgs)
    DirectCast(sender, RichTextBox).SelectAll()
    DirectCast(sender, RichTextBox).Selection.ApplyPropertyValue(RichTextBox.FontWeightProperty, "Bold")
    e.Handled = False
End Sub

Private Sub CommandBinding_CanExecute(ByVal sender As System.Object, ByVal e As System.Windows.Input.CanExecuteRoutedEventArgs)
    e.CanExecute = True
End Sub

Est-ce que je suis en train de faire avec les commandes possibles? Je préférerais ne pas avoir à faire des références directes à chaque zone de texte dans le code derrière l'intérieur d'un Click_Event ou quelque chose comme.

Merci pour l'aide!

Était-ce utile?

La solution

Je référence le conteneur parent, et regarder à travers ses enfants pour un type spécifié, puis effectuez votre action sur l'objet enfant à condition qu'il soit le type que vous voulez.

Quelque chose comme

foreach(var child in MyRootPanel.Children)
{
    if (child is RichTextBox)
    {
        // Process whatever
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top