我正在尝试创建一个与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,启动诊断程序并尝试调整应用程序的高度以了解我的意思。