2

Wireshark のものとまったく同じネットワーク診断ページを作成しようとしています。

DataGrid (送信/受信パケットをテーブルに表示するため)、TreeView (折りたたみ/展開機能を使用してパケットに関する詳細情報を表示するため)、および RichTextBox (生データを表示するため) を順番に持っています。

現在持っているXAMLは次のとおりです。

<UserControl x:Class="DDCUI.CommDiagnosisWPFCtrl"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" Height="950" Width="300">
    <DockPanel LastChildFill="True">
        <DataGrid DockPanel.Dock="Top" SelectionMode="Single" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" MaxHeight="300" AutoGenerateColumns="False" Name="DGComm" CanUserResizeColumns="True" IsReadOnly="True" SelectedCellsChanged="DGComm_SelectedCellsChanged">
            <DataGrid.Columns>
                <DataGridTextColumn Header="No." Binding="{Binding Number}" Width="0.1*"/>
                <DataGridTextColumn Header="Time" Binding="{Binding Time}" Width="0.1*" />
                <DataGridTextColumn Header="Protocol" Binding="{Binding Protocol}" Width="0.15*" />
                <DataGridTextColumn Header="Source" Binding="{Binding Source}" Width="0.15*" />
                <DataGridTextColumn Header="Destination" Binding="{Binding Destination}" Width="0.15*" />
                <DataGridTextColumn Header="Data" Binding="{Binding Data}" Width="0.5*" />
            </DataGrid.Columns>
        </DataGrid>
        <RichTextBox DockPanel.Dock="Bottom" MinHeight ="100" Name="RtbHexCode" IsReadOnly="True" />
        <TreeView MinHeight="100" Name="TreeViewDecode" ScrollViewer.VerticalScrollBarVisibility="Auto"/>
    </DockPanel>
</UserControl>

ユーザーに手動で行サイズを調整させることができないため、ドックパネルがうまく機能していないと判断しました。

設計要件を満たすために、XAML にどのような変更を加える必要があるのか​​疑問に思っています。あれは:

  • ユーザーは、個々のコントロールの高さを手動でサイズ変更できる必要があります
  • Datagrid の高さは固定されており、ユーザーがメイン ウィンドウのサイズを変更しても大きくなったり小さくなったりすることはありません。
  • メインウィンドウの高さが小さくなると、まずツリービューの高さが小さくなります。(このプロセス中、必要に応じて垂直スクロール バーが表示されます)。ツリービューが見えなくなると、リッチテキスト ボックスの高さが小さくなります。

私の説明があまり意味をなさない場合は、wireshark を開いて診断を開始し、アプリケーションの高さのサイズを変更して、私の意味を確認することをお勧めします。

4

2 に答える 2

1

最も用途の広いパネルがない場合は、Grid必要なことを実行して、独自に実装することができます (から継承することによりPanel)。を効果的にサブクラス化できるかどうかはわかりませんが、Gridドラッグによるサイズ変更を既にサポートしているため、最初に検討するGridSplitters必要があります(ただし、それらを独自に再利用できます)。

于 2012-08-03T00:07:53.550 に答える
1

Wireshark のソースをダウンロードして、それがどのように行われているかを調べてみませんか? 彼らが使用する UI 技術でコーディングすることを意味するとしても、それは明らかにあなたの目的にぴったりです!

于 2012-07-26T11:47:37.020 に答える