0

我是 Win8 开发的新手,我坚持实现一些我认为相当容易的设计,因为我确实有一些 C#、Javascript 等方面的经验。

我这样创建了一个DataTemplate:</p>

<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 ”的 Grid 被设计为当前悬停 GridViewItem的详细信息的覆盖容器,当某个GridViewItem 悬停时,覆盖将很好地淡入。所以我将它的不透明度设置为 0,寻找一些方法来完成我的设计。(我在网站上使用过这种设计很多次,但第一次在 Win8 应用程序中使用)

那时我真的觉得自己被困住了,这似乎是不可能的。

我倾向于覆盖模板(ItemTemplate & ItemContainerStyle)它不起作用。ItemTemplate 都是关于Data,ItemContainerStyle 都是关于style,但它们是相互独立的,当PointerOver 状态为on 时,它不能对ItemTemplate 中的内容做任何事情,只是简单地改变外部容器的一些无用属性。

这让我感到困惑,为什么 Win8 Metro 中的 GridView 不为单个 GridViewItem 提供悬停事件,我需要知道什么来完成这个吗?请给点提示。

4

1 回答 1

0

虽然ItemContainerStyle可能包括一些可以帮助您的视觉状态 - 简单地将 aUserControl放在ItemTemplate/中可能会更容易DataTemplate。一旦您创建了一个UserControl- 您可以轻松访问其代码隐藏,并且您可以随时处理各种事件、定义视觉状态和这些状态之间的转换。您的问题可能是没有可以通过触摸输入处理的悬停事件,因此您应该考虑一些替代方案 - 也许在您点击项目时在详细信息视图中或在单独的面板中显示您的叠加网格视图项。请注意,TextBlock大多数用户无法读取 250x250 磁贴顶部的 10 行或 8 秒网格。

于 2013-02-09T05:41:51.600 回答