Как заставить Panel реагировать на события Tap, но не разрешать редактирование TextBox? - PullRequest
0 голосов
/ 05 декабря 2011

У меня есть следующий код:

public class IdentityCell : Panel
{
  public IdentityCell()
  {
    Margin = m_zeroThickness;
    VerticalAlignment = VerticalAlignment.Top;
    Width = double.NaN;

    m_labelIcon = new Image();
    {
      m_labelIcon.VerticalAlignment = VerticalAlignment.Center;
      m_labelIcon.Width = getIconSizeToUseInPixels();
      m_labelIcon.Height = getIconSizeToUseInPixels();
    }
    Children.Add(m_labelIcon);

    m_labelName = new TextBox();
    {
      m_labelName.Margin = m_zeroThickness;
      m_labelName.VerticalAlignment = VerticalAlignment.Center;
      m_labelName.TextAlignment = TextAlignment.Center;

      m_labelName.FontSize = (double)
        Application.Current.Resources["PhoneFontSizeMediumLarge"];

      m_labelName.Padding = m_zeroThickness;
      m_labelName.IsHitTestVisible = false;
      m_labelName.BorderThickness = m_zeroThickness;
      m_labelName.Width = double.NaN;
      m_labelName.Foreground = m_phoneForegroundBrush;
      m_labelName.Background = null;
    }
    Children.Add(m_labelName);

    IsHitTestVisible = true;
    Tap += onTap;
  }

  ...
}

При касании m_labelIcon вызывается onTap ().Но когда m_labelName касается, onTap () НЕ вызывается.Если для m_labelName.IsHitTestVisible задано значение true, нажатие на m_labelName приводит к тому, что элемент управления переходит в режим редактирования и выскакивает экранная клавиатура.Предполагается, что m_labelName - это просто статический текстовый элемент управления без поддержки редактирования.Я пытался использовать свойства IsEnabled или IsReadOnly, но они изменяют внешний вид.

Мой TextBox находится рядом с моим изображением.Макет выглядит следующим образом:

---- Panel --------------------
<Image> <       TextBox       >
---- Panel --------------------

Любая помощь будет оценена!

Спасибо

1 Ответ

4 голосов
/ 05 декабря 2011

Если m_labelName должен быть просто статическим текстовым элементом управления без поддержки редактирования, попробуйте вместо этого использовать TextBlock .

см. Класс TextBlock в msdn.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...