Включить отключенное текстовое поле в wpf - PullRequest
1 голос
/ 21 февраля 2012

Возможно ли иметь TextBox, который по умолчанию отключен, но становится активным, когда пользователь дважды щелкает по нему?

Ответы [ 3 ]

4 голосов
/ 21 февраля 2012

вы можете поместить свой TextBox в StackPanel следующим образом:

   <StackPanel MouseLeftButtonDown="StackPanel_MouseDown">
       <TextBox Name="textBox1"/>
   </StackPanel>

Затем в обработчике событий StackPanel:

    private void StackPanel_MouseDown(object sender, MouseButtonEventArgs e)
    {
        if (e.ClickCount >= 2)
        { 
            textBox1.IsEnabled = true; //only hit here on DoubleClick  
        }
    }

вы также можете смоделировать StackPanel DoubleClick, как описано в этом вопросе:

Стеклопанель WPF с Click & DoubleClick

3 голосов
/ 21 февраля 2012

Это очень необычно, также, когда элемент управления отключен, он не должен получать ввод.Пользователи, видящие отключенный элемент управления, обычно даже не пытаются щелкнуть / дважды щелкнуть по нему.

Может быть, вы можете добавить флажок, чтобы включить его (или принадлежащую ему функцию), или показать окно сообщения, когда дваждыщелкнув по нему, когда это не разрешено / предназначено для.В этом случае вы также можете четко указать причину, по которой на него нельзя щелкнуть дважды.

То, что я видел раньше, это флажок без текста прямо перед элементом управления.Когда вы нажимаете флажок, он включает элемент управления (текстовое поле в вашем случае) после него.Вы можете даже использовать всплывающую подсказку для флажка, чтобы предоставить справочную информацию о том, что делает флажок.

2 голосов
/ 21 февраля 2012

Я бы попробовал присоединиться к событию PreviewMouseDown и включить / отключить там.

В противном случае вам придется выполнить старый трюк VB6 с прозрачным элементом управления над текстовым полем, чтобы получить событие нажатия.

...