2011-07-25 58 views
0

在WPF中,我试图使用命令一次设置多个文本框中的所有内容。下面的代码能够得到一个命令切换按钮执行哪个文本框有范围,但我似乎无法得到命令同时执行两个。WPF VB.net - 可以为同一个命令执行多个CommandBindings吗?

<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或类似内容中。

感谢您的帮助!

回答

0

我会引用父容器,并通过它的子节点查找指定的类型,然后在子对象上执行您的操作,只要它是您想要的类型。

喜欢的东西

foreach(var child in MyRootPanel.Children) 
{ 
    if (child is RichTextBox) 
    { 
     // Process whatever 
    } 
} 
+0

我没有想到这一点。好想法! –

相关问题