Почему я не могу коснуться / щелкнуть пустые области внутри Border / ContentControl, не установив прозрачность фона дочернего элемента?
Я наконец смог создать «простой» прозрачный кнопочный элемент управления, основанный наContentControl
, Однако может ли кто-нибудь объяснить, почему я не мог щелкнуть / коснуться каких-либо пустых областей элемента управления, пока не установил прозрачный фон дочернего элемента? Я столкнулся с этой проблемой также, когда:
Вот мой класс "кнопка":
public class TransparentButton : ContentControl {
public TransparentButton() {
HorizontalContentAlignment = HorizontalAlignment.Stretch;
}
public override void OnApplyTemplate() {
var child = Content as Grid;
if (child != null) {
child.Background = new SolidColorBrush(Colors.Transparent);
}
base.OnApplyTemplate();
}
}
Это довольно специфично для моих случаев при использовании (предполагается, что Grid потомок), но это работает. Я использую его для списков (не ListBox) с включенным TiltEffect.
Контекст вопроса:
<ItemsControl x:Name="Items" toolkit:TiltEffect.IsTiltEnabled="True">
<ItemsControl.ItemTemplate>
<DataTemplate>
<controls:TransparentButton
cal:Message.Attach="[Event Tap] = [Action Go($dataContext)]">
<Grid>
<Stac,kPanel HorizontalAlignment="Left">
<TextBlock Text="{Binding Test}" />
</StackPanel>
<StackPanel HorizontalAlignment="Right">
<TextBlock Text="{Binding Test2}" />
</StackPanel>
</Grid>
</controls:TransparentButton>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Если вы щелкаете между StackPanels внутри элемента, событие не запускается и ничего не происходит. Только когда фон сеткиTransparent
это "занять место".
Я пришел из сети, так что это сбивает с толку; содержащий элемент должен быть «тестируемым на попадание», даже если его фон не установлен.