1

私はWPFを初めて使用するので、あらゆるアドバイスを受け入れます。私の問題:デザイナーを使用して、UIのさまざまなコンポーネントを好きなように配置します。そしてそれは素晴らしいです。このタイプのXAML構造に問題がありました。

<Window>
<Grid>
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition Width="Auto"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
        /* Couple of buttons */
    </Grid>
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="223*"/>
            <RowDefinition Height="99*"/>
        </Grid.RowDefinitions>
        <TabControl Margin="85,0,0,0" Padding="0,-5,0,0" Grid.RowSpan="2">
            <TabItem Visibility="Collapsed">
                <Grid>
        /* textboxes and labels */
                </Grid>
            </TabItem>
            <TabItem Visibility="Collapsed">
                <Grid>
                    <Border Visibility="Hidden" Margin="136,66,76,66" Panel.ZIndex="10" BorderThickness="1" Width="320" Height="180">
                        <Grid Background="White">
                            <Grid.Effect>
                                <DropShadowEffect BlurRadius="10" RenderingBias="Quality" Direction="270" ShadowDepth="3" Opacity="0.1"/>
                            </Grid.Effect>
                            /* labels, textboxes and buttons */
                        </Grid>
                    </Border>
                    <TabControl Margin="0,0,0,38">
                        <TabItem>
                            <Grid>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition/>
                                    <ColumnDefinition/>
                                </Grid.ColumnDefinitions>
                                /* other elements */
                            </Grid>
                        </TabItem>
                        <TabItem>
                            <Grid> 
                                <Grid>
                                    /* checkboxes */
                                </Grid>
                                <Grid>
                                    /* checkboxes */
                                </Grid>
                                /* labels */
                            </Grid>
                        </TabItem>
                        <TabItem>
                            <Grid>
                            </Grid>
                        </TabItem>
                    </TabControl>
                    /* buttons and labels */
                </Grid>
            </TabItem>
        </TabControl>
    </Grid>
</Grid>

通常、シーン上で何かを移動したい場合は、XAMLで記述するよりもはるかに簡単なので、選択してドラッグ/変更するだけです。ただし、上記のコードを使用して、内部のTabControlから何かを選択したい場合は、選択できません。上記のものを自動的に選択するため、UIの管理が少し難しくなります。Z-Indexと関係があると思いますが、よくわかりません。おそらくお粗末な質問だと思いますが、苦労するので、誰かが説明してくれたらとてもありがたいです!

ありがとう!

4

2 に答える 2

1

さて、私の推測では、クリックをキャプチャし、下の要素の選択を妨げているグリッドが互いに重なり合っています(あなたが言及したようにzオーダー)。

注意すべき点がいくつかあります

これは実際には設計者に固有のものではありません。ヒットテスト可能な要素をそれぞれの上に重ねると、透明に見えても、クリックと「スチール」フォーカスをキャプチャします。これを防ぐためにさまざまなことができます。1つのオプションは、クリックしてその下の要素に「パススルー」する要素にIsHitTestVisible=falseを設定することです。もう1つのオプションは、要素の背景をデフォルト(透過的)ではなく{x:Null}に設定することです。

おそらくVSウィンドウの左側にある[ドキュメントアウトライン]パネル(または[表示]|[その他のウィンドウ]|[ドキュメントアウトライン])を使用して、ビジュアルツリーを視覚的にナビゲートできます。これにより、他のアイテムの下にあるアイテムを「選択」することができます。ただし、ドキュメントのアウトラインで選択した場合でも、デザインサーフェスの上部に浮かぶことはないため、ドラッグして配置することはできませんが、サイズを変更することはできます。選択した要素のプロパティウィンドウを処理してアクセスします。

最終的には、必要なドラッグポジショニングを取得するために、その上にある要素を「非表示」にする必要があります。

于 2012-08-09T18:46:53.027 に答える
1

同じ問題が発生しました。WPFデザイナーでアプリをレイアウトするのに忙しく、以前は移動できたものが選択できず、ドラッグもできず、TabControl常に焦点が合っていました。

問題はTabItem崩壊していることにあるようです。TabItem内で。が含まれているものを選択することは不可能であることがわかりましたVisibility="Collapsed"

物事を移動する必要がある場合は、可視性をVisible一時的に変更してみてください-デザイナーで物事を移動し、後で再び可視性を設定することができました。

私はこれを特に徹底的にテストしていません、そしてそれは少し厄介です、しかしそれは私がレイアウトをするのに十分うまくいきました。

于 2014-01-21T12:19:28.630 に答える