Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 控制布局的WPF问题_C#_.net_Wpf_Controls - Fatal编程技术网

C# 控制布局的WPF问题

C# 控制布局的WPF问题,c#,.net,wpf,controls,C#,.net,Wpf,Controls,我正在制作一个应用程序,使用它的API连接到我们的计费软件,我遇到了一些问题,使布局正常工作 我想这样做,当其中一个扩展器最小化时,另一个窗口会填补空白,当它再次扩展时,另一个扩展器会回到原来的位置。现在,当箭头单击其中一个时,只有一个空白。我使用DockPanel作为父级,我假设它会自动执行此操作,但它不起作用 第二个问题,有没有办法使这些区域可以调整大小?我不想尝试让用户取消菜单(甚至不知道直接使用WPF是否可行),但如果他们可以更改菜单的宽度/高度,那就太好了 也是一个新的问题,但是C+

我正在制作一个应用程序,使用它的API连接到我们的计费软件,我遇到了一些问题,使布局正常工作

我想这样做,当其中一个扩展器最小化时,另一个窗口会填补空白,当它再次扩展时,另一个扩展器会回到原来的位置。现在,当箭头单击其中一个时,只有一个空白。我使用DockPanel作为父级,我假设它会自动执行此操作,但它不起作用

第二个问题,有没有办法使这些区域可以调整大小?我不想尝试让用户取消菜单(甚至不知道直接使用WPF是否可行),但如果他们可以更改菜单的宽度/高度,那就太好了

也是一个新的问题,但是C++的头文件是什么?看起来您只使用了.cs文件,但我不确定。我想提取所有从计费软件中提取数据的函数,并将它们放入不同的文件中,以清理代码

这是我的XAML

<Window x:Class="WpfApplication3.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Billing Management" Height="550" Width="754" xmlns:shared="http://schemas.actiprosoftware.com/winfx/xaml/shared" WindowStartupLocation="CenterScreen" WindowStyle="ThreeDBorderWindow">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="22" />
            <RowDefinition />
        </Grid.RowDefinitions>
        <Menu Height="22" Name="menu1" Margin="0" HorizontalAlignment="Stretch" VerticalAlignment="Top" HorizontalContentAlignment="Left" IsEnabled="True" IsMainMenu="True">
            <MenuItem Header="_File">
                <MenuItem Header="_Open" />
                <MenuItem Header="_Close" />
                <Separator/>
                <MenuItem Header="_Exit" />
            </MenuItem>
        </Menu>
            <TabControl Name="tabControl1" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" BorderThickness="1" Padding="0" TabStripPlacement="Bottom" UseLayoutRounding="False" FlowDirection="LeftToRight" Grid.Row="1">
                <TabItem Header="Main" Name="tabItem1" Margin="0">
                    <DockPanel Name="dockPanel1" LastChildFill="True">
                        <ListBox Height="100" Name="listBox3" DockPanel.Dock="Top" />
                        <ListBox Name="listBox4" Width="200" DockPanel.Dock="Right" />
                        <DockPanel Height="Auto" Name="dockPanel2" Width="Auto" VerticalAlignment="Stretch" LastChildFill="True">
                            <shared:AnimatedExpander Header="Staff Online" Width="200" Name="expanderStaffOnline" IsExpanded="True" Height="194" BorderThickness="0" DockPanel.Dock="Top" VerticalContentAlignment="Stretch">
                                    <ListBox Name="listboxStaffOnline" Width="Auto" Height="Auto" Margin="0" VerticalAlignment="Stretch" Loaded="listboxStaffOnline_Loaded" />
                            </shared:AnimatedExpander>
                            <shared:AnimatedExpander Header="Test Menu 2" Height="Auto" Name="animatedExpander1" BorderThickness="1" Margin="0,0,0,0" IsExpanded="True" VerticalContentAlignment="Stretch">
                                    <ListBox Height="Auto" HorizontalAlignment="Stretch" Name="listBox6" VerticalAlignment="Stretch" Margin="0" BorderThickness="1" />
                            </shared:AnimatedExpander>
                        </DockPanel>
                    <ListBox Height="100" Name="listboxAdminLogs" DockPanel.Dock="Bottom" Loaded="listboxAdminLogs_Loaded" />
                        <ListBox Name="listBox5" />
                    </DockPanel>
                </TabItem>
                <TabItem Header="Support" Name="tabItem2" Margin="0">
                </TabItem>
            <TabItem Header="Clients" />
            <TabItem Header="Billing" />
            <TabItem Header="Orders" />
        </TabControl>
    </Grid>
</Window>

我建议您将扩展器放在网格中,并将网格行的行高设置为“自动”。 要使其可调整大小,只需在该网格的中间行中添加GridSplitter

至于你补充的问题:我认为最好复制扩展器标题的样式,并将其用于标签或其他标题


另外(这篇文章中有很多问题):C#没有头文件。

您应该将扩展器放在一个网格中,这样可以让内容自动展开和填充。如果行/列定义的宽度/高度设置为自动或*

如果要调整大小,需要使用GridSplitter;有关更多详细信息,请参阅

<>我不知道C++,所以不能真正告诉你想要的头文件是等价的,但是我认为你要做的是使用部分类来实现的;有关更多详细信息,请参阅


最后,在你的评论中回答你的问题;要使WPF中的所有控件具有统一的外观,您需要创建使用一组通用颜色/画笔的自定义样式。

还有一个快速问题。是否有任何控件的外观与扩展器上的“标题栏”相同?我想统一我的界面,并给出其他部分的标题栏,但我不希望它们能够扩展/最小化其中的一些。同时使用GridLength Auto和GridSplitters不起作用,因为GridSplitters会在您使用它们时显式设置GridLength。所以只需将DockPanel替换为行高设置为Auto的网格?我还没有研究GridSplitters,但听起来不错,我会检查一下。对于标题,标签是最好的选择?