Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在win8商店应用程序中,如何在GridView中淡入项目覆盖?_C#_Xaml_Windows 8_Microsoft Metro_Winrt Xaml - Fatal编程技术网

C# 在win8商店应用程序中,如何在GridView中淡入项目覆盖?

C# 在win8商店应用程序中,如何在GridView中淡入项目覆盖?,c#,xaml,windows-8,microsoft-metro,winrt-xaml,C#,Xaml,Windows 8,Microsoft Metro,Winrt Xaml,我是Win8开发的新手,我一直致力于实现一些我认为相当简单的设计,因为我确实有一些C#,Javascript等方面的经验 我创建了一个数据模板,如下所示: <DataTemplate x:Key="Customized250x250ItemTemplate"> <Grid HorizontalAlignment="Left" Width="250" Height="250"> <Border> <Image

我是Win8开发的新手,我一直致力于实现一些我认为相当简单的设计,因为我确实有一些C#,Javascript等方面的经验

我创建了一个数据模板,如下所示:

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

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

我倾向于覆盖模板(ItemTemplate和ItemContainerStyle) 这行不通。ItemTemplate是关于数据的,ItemContainerStyle是关于sty的 le,但它们彼此独立
,当打开PointerOver状态时,它无法对ItemTemplate中的内容执行任何操作,只需更改外部容器的一些无用属性


为什么Win8 Metro中的GridView没有为单个GridViewItem提供悬停事件,这让我很困惑,我需要知道什么才能完成这项工作吗?请提供一些提示。

ItemContainerStyle
可能包括一些可以帮助您的可视状态-只需在
ItemTemplate
/
数据模板
中添加
用户控件
可能更容易。创建
UserControl
后,您可以轻松访问其代码隐藏,并可以处理各种事件、定义可视状态以及随时在这些状态之间转换。您的问题可能是,触摸输入无法处理悬停事件,因此您应该考虑一些备选方案-可能在点击时显示覆盖图、点击项目时在详细信息视图中显示覆盖图或在选定网格视图项目的单独面板中显示覆盖图。请注意,在250x250平铺上有10行或8个
TextBlock
s的网格对大多数用户来说是不可读的。

没有悬停事件,因为大多数触摸输入设备不支持触摸悬停,WinRT试图将触摸和鼠标输入相等,因此需要一些折衷和替代创造性解决方案。哦,这是一个很棒的主意,我稍后会在家里试试,谢谢!