드디어 ContentControl
에 기반한 "쉬운"투명 버튼 컨트롤을 만들 수있었습니다. 그러나 누군가가 투명하게 자식 요소의 배경을 설정할 때까지 컨트롤의 빈 영역을 클릭하거나 탭할 수없는 이유를 설명 할 수 있습니까?Border/ContentControl 내부의 빈 영역을 탭/클릭 할 수없는 이유는 무엇입니까?
- 내가 국경
- 를 사용하려고 나는 버튼이 아닌 ContentTemplate의 의 ControlTemplate을 설정하면 나는 또한이 문제에 달렸다. (그리드 아이를 가정)를 사용하지만, 그것이 작동 할 때
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(); } }
그것은 나의 경우에 꽤 특정의 :
여기 내 "버튼"클래스입니다. 내가 사용하는 이유는 TiltEffect가 설정된 목록 (비 ListBox) 때문입니다. 문제의
상황은 : 당신이 항목 내부의 StackPanels 사이 클릭하면
<ItemsControl x:Name="Items" toolkit:TiltEffect.IsTiltEnabled="True">
<ItemsControl.ItemTemplate>
<DataTemplate>
<controls:TransparentButton
cal:Message.Attach="[Event Tap] = [Action Go($dataContext)]">
<Grid>
<StackPanel HorizontalAlignment="Left">
<TextBlock Text="{Binding Test}" />
</StackPanel>
<StackPanel HorizontalAlignment="Right">
<TextBlock Text="{Binding Test2}" />
</StackPanel>
</Grid>
</controls:TransparentButton>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
, 어떤 이벤트가 해고하지 않고 아무 반응이 없습니다됩니다. 그리드의 배경이 Transparent
일 때만 "공간을 차지합니다".
웹 배경에서 왔기 때문에 혼란 스럽습니다. 포함 요소는 배경이 설정되어 있지 않아도 "히트 테스트 가능"이어야합니다.