2013-07-02 4 views
0

У меня есть сетка, в которой есть 4 ребенка в стеке. Я хочу сделать видимыми другие 3 панели стека, щелкнув первую стеквую панель и сделав их ручными, щелкнув их. Я использую событие Tap в Stackpanel, но оно не обрабатывается в пустых частях стековых панелей.Как использовать событие Tap в пустой части StackPanel в WinRT?

Как это сделать для полной части StackPanel?

My StackPanel

<StackPanel Orientation="Horizontal"> 
<TextBlock Foreground="Gray" FontSize="12" FontFamily="Arial Black" x:Uid="LastDateofEntry" Margin="0,0,3,0" FontWeight="SemiBold" /> 
<TextBlock Foreground="Gray" FontSize="12" FontFamily="Arial Black" Text="{Binding LastVisitDateTime}"/> 
</StackPanel> 
+0

Возможный дубликат [Как я могу использовать событие tap в пустой партии Stackpanel?] (Http://stackoverflow.com/questions/17419265/how-can-i-use-tap-event-in-stackpanels-empty- вечеринка) –

ответ

1

Вы, возможно, обнаружили Гоча в рамках пользовательского интерфейса Microsoft, согласно которому, если нет визуального элемента прикоснуться к/нажать, то не обнаружены взаимодействия.

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

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

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

Вкратце: ваши элементы, вероятно, не имеют полной ширины, поэтому нечего касаться. . Следите за элементы, которые логически на экране, но были оптимизированы прочь и являются untappable, нужны уловки, чтобы заставить их вернуться в

Update

Вот некоторые демо-код для вашей ситуации:

<Grid Grid.Row="1"> 
     <Grid.RowDefinitions> 
      <RowDefinition /> 
      <RowDefinition /> 
     </Grid.RowDefinitions> 

     <Grid Grid.Row="0" Background="DarkBlue"> 
      <StackPanel Orientation="Horizontal"> 
       <TextBlock>Mace</TextBlock> 
       <TextBlock>Pepper</TextBlock> 
      </StackPanel> 
     </Grid> 
     <Grid Grid.Row="1" Background="DarkGreen"> 
      <StackPanel Orientation="Horizontal"> 
       <TextBlock>Basil</TextBlock> 
       <TextBlock>Oregano</TextBlock> 
      </StackPanel> 
     </Grid> 
    </Grid> 

Здесь сетка представляет каждый элемент в «списке». Вы используете сетку из 4 строк в виде списка, не так ли?

Хорошей практикой является создание «групп» визуальных элементов внутри базовой сетки. Не беспокойтесь о том, чтобы использовать слишком много, если вы когда-либо видите визуальное дерево отображаемой страницы, вы увидите, что могут быть сотни или тысячи сеток, без большой производительности.

+0

Вы правы, я тоже так думал, но как я могу сделать это динамично? Например, моя первая Stackpanel - это Мой TextBlock является обязательным из кода позади , –

+0

Таким образом, вы делаете дизайн цветным во время работы с ним, просто чтобы вы могли видеть границы и где все на самом деле, затем удалите/измените цвета, когда работает тестирование на удар. –

+0

Я не понимаю вопроса в комментарии. –