2

ウィンドウ ( wpf )を3 つの列に分割したいとDockPanel思いStackPanelます。CanvasDockPanellistboxCanvas

これは私が行ったことであり、展開できないため、左の列に問題があります。ユーザーがキャンバスにドラッグ/ドロップできるように、カスタムオブジェクトのホルダーとして左の列が必要です。お知らせ下さい。

<DockPanel LastChildFill="True" Background="LightGray" Margin="5">
   <Expander Header="Controls" Background="Gray" Margin="2" 
             Content="{StaticResource FC}" DockPanel.Dock="Top" 
             IsExpanded="True" Width="200" />
</DockPanel>

<GridSplitter Focusable="False" Width="2" Background="LightGray"
              VerticalAlignment="Stretch" HorizontalAlignment="Right"/>

<lib:MyCanvas x:Name="myCanvas" FlowDirection="LeftToRight"  
         Background="White" AllowDrop="True" 
         Mouse.MouseMove="MyCanvas _MouseMove">
</lib:MyCanvas >

また、リストボックスを保持できるようにするには、右側でどのコントロールを使用する必要がありますか?

4

3 に答える 3

1

あなたが尋ねたさまざまな質問を見ると、Visual Studio に似たアプリケーションを構築しようとしているようです。ツールボックス、さまざまなツールボックス アイテム、デザイナー、デザイナーでのドラッグ アンド ドロップ アイテムなど、要件に似た CodeProject に関する次の優れた一連の記事を参照することをお勧めします。

WPF ダイアグラム デザイナー -パート 4パート 3パート 2パート 1

右側に PropertyGrid を追加し、デザイナーで選択した ToolBox 項目をバインドするだけです。

于 2012-06-18T18:24:06.417 に答える
1

別のグリッド、キャンバス、またはその他の種類のコンテナーをグリッド内に埋め込むことができますが、そうする必要はありません。しかしGridSplitter、定義により、その機能を提供するために a の内部に配置する必要がありますGrid。そうしないと、何もしません。

次のようなことをしたいようです:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="5" />
        <ColumnDeifnition Width="*" />
        <ColumnDefinition Width="100" /> <!-- whatever size you need here --->
    </Grid.ColumnDefinitions>

    <DockPanel LastChildFill="True" Background="LightGray" Margin="5" Grid.Column="0">
      <Expander Header="Controls" Background="Gray" Margin="2" 
           Content="{StaticResource FC}" DockPanel.Dock="Top" 
                  IsExpanded="True" Width="200" />
   </DockPanel>
   <GridSplitter Focusable="False" Width="2" Background="LightGray" Grid.Column="1"
                    VerticalAlignment="Stretch" HorizontalAlignment="Stretch" ResizeDirection="Columns"/>

    <lib:MyCanvas x:Name="myCanvas" FlowDirection="LeftToRight"  Grid.Column="2"
         Background="White" AllowDrop="True" 
               Mouse.MouseMove="MyCanvas _MouseMove">
    </lib:MyCanvas >

    <ListBox Grid.Column="3" ... />
</Grid>

このレイアウトには 3 つの列があり、2 番目の列は最初の 2 列のサイズを変更できるスプリッターであり (それらの間を前後にスライドします)、3 番目の列は固定サイズです。

于 2012-06-08T16:43:41.280 に答える
0

Grid3 で を作成しますcolumns。1番目と3番目にはDockPanelas子を入れます。

一般的なルールは、他の人を下に置かないことだと思います。その逆ではありませんcanvas

于 2012-06-08T16:42:11.813 に答える