0

WPFでは、コマンドを使用して、一度に複数のテキストボックスにすべてのコンテンツを設定しようとしています。次のコードは、トグルボタンでコマンドを取得して、スコープを持つテキストボックスを実行できますが、両方のコマンドを同時に実行することはできないようです。

<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

私がやろうとしていることはコマンドで可能ですか?click_eventなどのコードビハインドで各テキストボックスを直接参照する必要はありません。

助けてくれてありがとう!

4

1 に答える 1

0

親コンテナを参照し、指定されたタイプの子を調べてから、必要なタイプであれば子オブジェクトでアクションを実行します。

何かのようなもの

foreach(var child in MyRootPanel.Children)
{
    if (child is RichTextBox)
    {
        // Process whatever
    }
}
于 2011-07-25T16:46:52.330 に答える