kam*_*cus 3 xaml silverlight-4.0 windows-phone-7
我终于能够创建一个"简单"的透明按钮控件,基于a 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();
}
}
Run Code Online (Sandbox Code Playgroud)
它在使用时假定我的情况非常具体(假设一个Grid子元素),但它有效.我使用它的原因是对于启用了TiltEffect的列表(非ListBox).
问题的背景:
<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>
Run Code Online (Sandbox Code Playgroud)
如果在项目内的StackPanel之间单击,则不会触发任何事件,也不会发生任何事件.只有当Grid的背景是Transparent"占用空间"时才会这样.
我来自网络背景,所以这很令人困惑; 即使没有设置背景,包含元素也应该"可以测试".
Jaw*_*har 12
没有背景的对象通常在XAML术语中称为空心或不可命中.因此必须设置背景以使对象响应命中.要实现透明对象的命中测试,应将背景设置为透明.
有关命中测试的更多信息
http://msdn.microsoft.com/en-us/library/ms752097.aspx
| 归档时间: |
|
| 查看次数: |
1625 次 |
| 最近记录: |