Я написал UserControl
с двумя уровнями Expander
. Expander.Header
распределяет вложенные Grid / StackPanel / Docpanel неравномерно. Как я могу выровнять элементы на сетке в такой структуре?
Мой взгляд:
![My view](https://i.stack.imgur.com/xYSq7.jpg)
Мой пользовательский элемент управления xaml:
<UserControl x:Class="UserInterface.UserStructuresControl"
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"
xmlns:local="clr-namespace:UserInterface"
xmlns:res="clr-namespace:MigrationTool.Localization;assembly=MigrationTool.Localization"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<UserControl.Resources>
<CollectionViewSource
x:Key="TableSource"
Source="{Binding Path=TablesCollection}">
</CollectionViewSource>
<DataTemplate x:Key="ExpandableRow">
<Expander>
<Expander.Header>
<StackPanel Orientation="Horizontal">
<StackPanel.Resources>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Margin" Value="20,0,0,0"/>
</Style>
</StackPanel.Resources>
<CheckBox></CheckBox>
<TextBlock Text="{Binding Path=TableName}"></TextBlock>
<TextBlock HorizontalAlignment="Right" Text="{Binding Path=TableDescription}"></TextBlock>
</StackPanel>
</Expander.Header>
<StackPanel>
<DataGrid ItemsSource="{Binding Path=FieldCollection}"
CanUserAddRows="False"
CanUserDeleteRows="False"
AutoGenerateColumns="False"
>
<DataGrid.Columns>
<DataGridTemplateColumn
Header="{x:Static res:LocResources.UserFieldsHeader}"
Width="*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Expander>
<Expander.Header>
<StackPanel Orientation="Horizontal">
<StackPanel.Resources>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Margin" Value="20,0,0,0"/>
</Style>
</StackPanel.Resources>
<CheckBox></CheckBox>
<TextBlock Text="{Binding Path=Name}"/>
<TextBlock Text="{Binding Path=Description}"/>
</StackPanel>
</Expander.Header>
<Grid>
<TextBlock Text="{Binding Path=Description}"></TextBlock>
</Grid>
</Expander>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</StackPanel>
</Expander>
</DataTemplate>
</UserControl.Resources>
<Grid>
<DataGrid
ItemsSource="{Binding Source={StaticResource ResourceKey=TableSource}}"
CanUserAddRows="False"
CanUserDeleteRows="False"
AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTemplateColumn
SortMemberPath="TableName"
CanUserSort="True"
Header="{x:Static res:LocResources.TableNameHeader}"
CellTemplate="{StaticResource ExpandableRow}"
Width="*">
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
</UserControl>
И я также хочу спросить: , если курсор входит в открытую область вложенного Expander, когда колесо прокрутки мыши прокручивается, то внешняя панель прокрутки больше не активна. Как настроить колесо прокрутки только на внешней панели прокрутки?