Я делаю приложение, которое подключается к нашему биллинговому программному обеспечению, используя его API, и я сталкиваюсь с несколькими проблемами, требующими правильной работы макета.Проблемы с WPF с макетом управления
Я хочу сделать так, что, когда один из расширителей минимизирован, то другое окно заполняет пробел, и когда он расширяется снова другой расширитель возвращается туда, где она была. Прямо сейчас, когда стрелка нажимается на одну, есть только пустой пробел. Я использовал 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>
Еще один быстрый вопрос. Есть ли какой-то контроль, который дает тот же вид, что и «строка заголовка» на расширителях? Я хотел бы унифицировать свой интерфейс и дать другие заголовки заголовков других разделов, но я не хочу, чтобы они могли расширять/сводить к минимуму некоторые из них. –