0

4 つの Stackpanel 子を持つグリッドがあります。最初のスタックパネルをクリックして他の3つのスタックパネルを表示し、それらをクリックして折りたたむようにしたい。Stackpanel で Tap イベントを使用していますが、stackpanel の空の部分では処理されません。

StackPanel の完全な部分をどのように行うことができますか?

マイスタックパネル

<StackPanel Orientation="Horizontal"> 
<TextBlock Foreground="Gray" FontSize="12" FontFamily="Arial Black" x:Uid="LastDateofEntry" Margin="0,0,3,0" FontWeight="SemiBold" />
<TextBlock Foreground="Gray" FontSize="12" FontFamily="Arial Black" Text="{Binding LastVisitDateTime}"/> 
</StackPanel>
4

1 に答える 1

1

Microsoft の UI フレームワークで問題を発見したことがあるかもしれません。つまり、タッチまたはクリックする視覚要素がない場合、相互作用は検出されません。

私のコントロール テンプレートの多くでは、この問題を回避するために、小さな正の不透明度を持つものの背後に非表示の四角形を追加しました。

あなたの場合、視覚的な要素があるように見えますが、要素はおそらくコンテナの幅全体に広がっていません。

色付きの背景を追加して要素の終了位置を確認してから、幅を試したり、独自の (全幅) グリッドに StackPanels を配置したりして、背景の四角形または 0.1 アルファで設定された背景色も必要になる場合があります。

要するに、あなたの要素はおそらく全幅に達しないので、タップするものは何もありません。論理的には画面上にあるが、最適化されてタップできない要素に注意してください。それらを強制的に戻すにはトリックが必要です。

アップデート

あなたの状況のデモコードは次のとおりです。

    <Grid Grid.Row="1">
        <Grid.RowDefinitions>
            <RowDefinition />
            <RowDefinition />
        </Grid.RowDefinitions>

        <Grid Grid.Row="0" Background="DarkBlue">
            <StackPanel Orientation="Horizontal">
                <TextBlock>Mace</TextBlock>
                <TextBlock>Pepper</TextBlock>
            </StackPanel>
        </Grid>
        <Grid Grid.Row="1" Background="DarkGreen">
            <StackPanel Orientation="Horizontal">
                <TextBlock>Basil</TextBlock>
                <TextBlock>Oregano</TextBlock>
            </StackPanel>
        </Grid>
    </Grid>

ここで、グリッドは「リスト」内の各項目を表します。リストの形式として 4 行のグリッドを使用していますね。

最初に基本グリッド内にビジュアル要素の「グループ」を配置することをお勧めします。レンダリングされたページのビジュアル ツリーを見ると、数百または数千のグリッドが存在する可能性があることがわかりますが、パフォーマンスに大きな影響はありません。

于 2013-07-02T07:40:42.960 に答える