Почему я не могу коснуться / щелкнуть пустые области внутри Border / ContentControl, не установив прозрачность фона дочернего элемента?

Я наконец смог создать «простой» прозрачный кнопочный элемент управления, основанный наContentControl, Однако может ли кто-нибудь объяснить, почему я не мог щелкнуть / коснуться каких-либо пустых областей элемента управления, пока не установил прозрачный фон дочернего элемента? Я столкнулся с этой проблемой также, когда:

Я пытался использовать границуЯ установилControlTemplate кнопки, а неContentTemplate.

Вот мой класс "кнопка":

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 это "занять место".

Я пришел из сети, так что это сбивает с толку; содержащий элемент должен быть «тестируемым на попадание», даже если его фон не установлен.

Ответы на вопрос(1)

Ваш ответ на вопрос