我是Win8开发的新手,我坚持实现一些我认为相当容易的设计,因为我确实有一些C#,Javascript等经验。
我创建了一个像这样的DataTemplate:
<DataTemplate x:Key="Customized250x250ItemTemplate">
<Grid HorizontalAlignment="Left" Width="250" Height="250">
<Border>
<Image Source="{Binding Image}" Stretch="UniformToFill" AutomationProperties.Name="{Binding Title}"/>
</Border>
<TextBlock HorizontalAlignment="Right" TextWrapping="Wrap" Text="{Binding State}" VerticalAlignment="Top" Margin="0,10,20,0" FontFamily="Segoe UI" FontSize="12"/>
<Grid x:Name="InfoGrid" Background="Black" Opacity="0">
<Grid.RowDefinitions>
<RowDefinition Height="20"/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition Height="20"/>
</Grid.RowDefinitions>
<TextBlock HorizontalAlignment="Left" TextWrapping="Wrap" Text="Nickname" VerticalAlignment="Center" Margin="10,0,0,0" FontFamily="Segoe UI" FontSize="17.333" Grid.Row="1"/>
<TextBlock HorizontalAlignment="Right" TextWrapping="Wrap" Text="{Binding Nickname}" VerticalAlignment="Center" Margin="0,0,20,0" FontFamily="Segoe UI" FontSize="19.333" Grid.Row="2"/>
<TextBlock HorizontalAlignment="Left" TextWrapping="Wrap" Text="Age" VerticalAlignment="Center" Margin="10,0,0,0" FontFamily="Segoe UI" FontSize="17.333" Grid.Row="3"/>
<TextBlock HorizontalAlignment="Right" TextWrapping="Wrap" Text="{Binding Age}" VerticalAlignment="Center" Margin="0,0,20,0" FontFamily="Segoe UI" FontSize="19.333" Grid.Row="4"/>
<TextBlock HorizontalAlignment="Left" TextWrapping="Wrap" Text="Race" VerticalAlignment="Center" Margin="10,0,0,0" FontFamily="Segoe UI" FontSize="17.333" Grid.Row="5"/>
<TextBlock HorizontalAlignment="Right" TextWrapping="Wrap" Text="{Binding Race}" VerticalAlignment="Center" Margin="0,0,20,0" FontFamily="Segoe UI" FontSize="19.333" Grid.Row="6"/>
<TextBlock HorizontalAlignment="Left" TextWrapping="Wrap" Text="Language" VerticalAlignment="Center" Margin="10,0,0,0" FontFamily="Segoe UI" FontSize="17.333" Grid.Row="7"/>
<TextBlock HorizontalAlignment="Right" TextWrapping="Wrap" Text="{Binding Language}" VerticalAlignment="Center" Margin="0,0,20,0" FontFamily="Segoe UI" FontSize="19.333" Grid.Row="8"/>
</Grid>
</Grid>
</DataTemplate>
名称为“ InfoGrid ”的网格设计为当前悬停GridViewItem 的详细信息的叠加容器,叠加层当某些 GridViewItem悬停时,会很好地淡出。所以我将它的Opacity设置为0,寻找一些方法来完成我的设计。(我已经在网站上使用过这么多次设计,但是第一次使用Win8应用程序)
那时我觉得自己被困,似乎不可能。
我倾向于覆盖模板(ItemTemplate&amp; ItemContainerStyle) 它没有用。 ItemTemplate是关于Data的全部,ItemContainerStyle是关于sty的 le,但它们彼此独立,当PointerOver状态打开时,它不能对ItemTemplate中的内容做任何事情,只是改变外部容器的一些无用的属性。
令我困惑的是,为什么Win8 Metro中的GridView不为单个GridViewItem提供 Hover 事件,有什么我需要知道才能完成此操作吗?请提供一些提示。
答案 0 :(得分:0)
虽然ItemContainerStyle
可能包含一些可以帮助您的视觉状态,但在UserControl
/ ItemTemplate
中添加DataTemplate
可能会更容易。创建UserControl
后,您可以轻松访问其代码隐藏,您可以随时处理各种事件,定义视觉状态以及在这些状态之间转换。您的问题可能是虽然没有可以通过触摸输入处理的悬停事件,因此您应该考虑一些替代方案 - 可能会在点击项目时在详细信息视图中显示您的叠加层,或者在单独的面板中选择网格视图项。请注意,大多数用户无法读取250x250磁贴上方有10行或8 TextBlock
的网格。