Pregunta

En WPF estoy tratando de usar comandos para establecer todo el contenido en varios cuadros de texto a la vez. El siguiente código puede obtener un comando en el botón Toggle para ejecutar para el que el cuadro de texto tenga alcance, pero parece que no puedo obtener el comando para ejecutar para ambos al mismo tiempo.

<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

¿Lo que estoy tratando de hacer con los comandos? Preferiría no tener que hacer referencias directas a cada cuadro de texto en código detrás de un click_event o algo así.

¡Gracias por la ayuda!

¿Fue útil?

Solución

Haría referencia al contenedor principal y miraría a través de sus niños para un tipo específico, luego realizaría su acción en el objeto infantil, siempre que sea el tipo que desea.

Algo como

foreach(var child in MyRootPanel.Children)
{
    if (child is RichTextBox)
    {
        // Process whatever
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top