我正在制作一个使用其API连接到我们的结算软件的应用程序,我遇到了一些问题,让布局正常工作。
我想这样做,以便当其中一个扩展器最小化时,另一个窗口填充间隙,当它再次扩展时,另一个扩展器返回到原来的位置。现在当点击一个箭头时,只有一个空隙。我使用DockPanel作为父亲,我假设它会自动执行此操作,但它无法正常工作。
第二个问题,有没有办法让这些区域可以调整大小?我不想尝试让用户取消停靠菜单太过活泼(甚至不知道是否可以使用直接的WPF)但是如果他们可以改变它们的宽度/高度会很好。
另外,只是C#的一个新手问题,但是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>
答案 0 :(得分:1)
我建议你将扩展器放在网格中,并将网格的行高设置为auto。 要使其可调整大小,只需在此网格的行之间添加GridSplitters。
至于你提出的问题:我认为复制扩展程序标题的样式并将其用于标签或其他标题会更好。
另外(这个问题很多):C#没有头文件。
答案 1 :(得分:1)
您应该将扩展器放在网格中,以允许内容自动扩展和填充。提供行/列定义宽度/高度设置为自动或*。
如果要调整大小,则需要使用GridSplitter;有关详细信息,请参阅http://www.wpftutorial.net/GridLayout.html。
我不知道C ++所以不能真正告诉你想要相当于头文件,但我认为你想要做的是使用部分类可以实现的;有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/wa80x488(v=vs.80).aspx。
最后,在你的评论中回答你的问题;要在WPF中获得所有控件的统一外观,您需要创建使用一组常用颜色/画笔的自定义样式。