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 がホバーされると、オーバーレイがうまくフェード インします。そこで、Opacity を 0 に設定し、デザインを完成させるためのいくつかのアプローチを探しました (このデザインを Web サイトで何度も使用しましたが、Win8 アプリでは初めてです)。

それは私が本当に閉じ込められていると感じるときです、それは不可能に思えます.

テンプレート(ItemTemplate & ItemContainerStyle)をオーバーライドする傾向がありますが、うまくいきません。ItemTemplate はすべてデータに関するものであり、ItemContainerStyle はすべてスタイルに関するものですが、それらは互いに独立しています。PointerOver 状態がオンの場合、ItemTemplate のコンテンツには何もできず、外側のコンテナーの役に立たないプロパティを変更するだけです。

Win8 Metro の GridViewが単一の GridViewItem に対してHoverイベントを提供しない理由がわかりません。これを完了するために知っておく必要があることはありますか? いくつかのヒントをください。

4

1 に答える 1

0

あなたを助けることができるいくつかの視覚的な状態が含まれているかもしれませんが、単純に/にItemContainerStyle入れる方が簡単かもしれません。-を作成すると、コード ビハインドに簡単にアクセスでき、さまざまなイベントを処理したり、表示状態を定義したり、必要なときにいつでもこれらの状態間を遷移したりできます。あなたの問題は、タッチ入力で処理できるホバー イベントがないことかもしれません。そのため、いくつかの代替案を検討する必要があります。おそらく、タップ時にオーバーレイを表示するか、アイテムをタップしたときに詳細ビューに表示するか、選択した別のパネルに表示します。グリッド ビュー アイテム。250x250 タイルの上に10 行または 8 のグリッドがあるグリッドは、ほとんどのユーザーには判読できないことに注意してください。UserControlItemTemplateDataTemplateUserControlTextBlock

于 2013-02-09T05:41:51.600 に答える