c# - 用于像 Wireshark Diagnostics 这样的窗口的 XAML?

标签 c# .net wpf xaml

我正在尝试创建一个与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 的高度是固定的,如果用户调整主窗口的大小,它永远不会变大/变小
  • 当主窗口的高度变小时, TreeView 的高度首先变小。 (在此过程中,如有必要,会显示垂直滚动条)。当 TreeView 不再可见时,富文本框的高度会变小。

如果我的描述没有多大意义,最好打开wireshark,启动诊断并尝试调整应用程序的高度以了解我的意思。

最佳答案

如果没有任何面板,则 Grid作为最通用的,做你需要的,你可以实现你自己的(通过继承 Panel )。我不知道是否可以有效地对 Grid 进行子类化,但这将是首先要研究的事情,因为它们已经支持通过 GridSplitters 拖动调整大小。 (不过,您可以单独重复使用它们)。

关于c# - 用于像 Wireshark Diagnostics 这样的窗口的 XAML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11668495/

相关文章:

c# - 通过网络优化 Dictionary.EnumerateFiles

c# - 如何从特定位置提取字符串

c# - MOQ 返回动态类型作为对象问题

.net - .NET下的C/C++如何在运行时确定方法参数类型?

c# - 一个解决方案中的非托管 DLL 项目和托管 WinForms 应用程序

c# - 字符串被神秘地切断

c# - WPF 复选框 IsChecked 绑定(bind)不起作用

c# - 如何处理不支持绑定(bind)的图表?

c# - 模型关系导致 Swagger/端点出现问题

c# - 如何使 cookie 身份验证方案生成相对登录 url 而不是绝对登录 url?