WPF Commands - изменение свойства целевого элемента управления - PullRequest
0 голосов
/ 02 августа 2010

Я создаю команду, которая будет иметь элемент управления Textbox в качестве цели.

Код для создания команды:

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>    

CS: Конструктор окна:

        //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 для любого TextBox в окне без необходимости добавлять привязку команды к каждому TextBox.

-> Почему не добавляется привязка команды к Window?
-> Есть ли решения?

1 Ответ

1 голос
/ 02 августа 2010

Попробуйте:

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";  
    }  
}  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...