代码之家  ›  专栏  ›  技术社区  ›  thewpfguy

WPF命令-更改目标控件的属性

wpf
  •  0
  • thewpfguy  · 技术社区  · 16 年前

    创建命令的代码:

    public class Commands
    {
        public static RoutedCommand Appender;
    
        static Commands()
        {
            Appender = new RoutedCommand();
        }
    
        public static void AppenderExecuted(object target, ExecutedRoutedEventArgs e)
        {
            System.Windows.Controls.TextBox targetTbox = target as System.Windows.Controls.TextBox;
            if (targetTbox != null)
            {
                targetTbox.Text += "AppendedText";
            }
        }
    }
    

    XAML:

    <StackPanel Name="span" FocusManager.IsFocusScope="True">
        <Menu IsMainMenu="True">
            <MenuItem Header="Tools">
                <MenuItem Header="_Append" Name="menuAppend" />
            </MenuItem>
        </Menu>
        <TextBox Height="100"  Name="txtEdit"></TextBox>
    </StackPanel>    
    

            //create bindings
            CommandBinding bindingTM = new CommandBinding(Commands.Appender, Commands.AppenderExecuted);
    
            //[THIS DOESN'T WORK]
            this.CommandBindings.Add(bindingTM);
    
            //[THIS WORKS]
            txtEdit.CommandBindings.Add(bindingTM);
    
            //associate command
            menuAppend.Command = Commands.Appender;
    

    我希望能够在窗口的任何文本框上使用Appender命令,而无需将命令绑定添加到每个文本框。

    ->为什么不将命令绑定添加到窗口不起作用?

    1 回复  |  直到 16 年前
        1
  •  1
  •   HCL    16 年前

    尝试:

    public static void AppenderExecuted(object target, ExecutedRoutedEventArgs e)  {  
        System.Windows.Controls.TextBox targetTbox = e.OriginalSource as System.Windows.Controls.TextBox;  
        if (targetTbox != null) {  
                targetTbox.Text += "AppendedText";  
        }  
    }