WPF VB.net - Can multiple CommandBindings be executed for the same command?
-
26-10-2019 - |
문제
In WPF I'm trying to use commands to set all the content in multiple textboxes at once. The following code is able to get a command on the toggle button to execute for which ever textbox has scope but I can't seem to get the command to execute for both at the same time.
<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
Is what I am trying to do possible with commands? I would prefer not having to make direct references to each textbox in code behind inside a click_event or anything like.
Thanks for the help!
해결책
I would reference the parent container, and look through it's children for a specified type, then perform your action on the child object providing it is the type you want.
Something like
foreach(var child in MyRootPanel.Children)
{
if (child is RichTextBox)
{
// Process whatever
}
}
제휴하지 않습니다 StackOverflow