大佬教程收集整理的这篇文章主要介绍了WPF 如何仅使用 XAML 构建停靠的可调整大小的扩展器和网格?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试构建一个 wpf 应用程序,它有两个扩展器,一个在左边,另一个在右边,它们之间有网格。扩展器必须能够相应地调整自身大小,自动调整它们之间的网格大小,如下所示。
在下面粘贴一些 XAML 后,我能够调整左侧扩展器的大小,但未显示右侧扩展器和网格。
<GrID>
<!--<GrID.columnDeFinitions>
<columnDeFinition WIDth="auto"/>
<columnDeFinition WIDth="*"/>
<columnDeFinition WIDth="auto"/>
</GrID.columnDeFinitions>-->
<DockPanel>
<Expander DockPanel.Dock="left" x:name="ProjectsExpander" header="Projects" IsExpanded="True" ExpandDirection="Right" HorizontalAlignment="Stretch">
<GrID WIDth="{Binding relativesource={relativesource Mode=FindAncestor,AncestorType={x:Type Expander}},Path=ActualWIDth}">
<GrID.columnDeFinitions>
<columnDeFinition WIDth="auto"/>
<columnDeFinition WIDth="2"/>
</GrID.columnDeFinitions>
<GrID GrID.column="0">
<something here/>
</GrID>
<GrIDSplitter GrID.column="1" WIDth="2" BACkground="{Dynamicresource borderBrush}" ResizeBehavior="PrevIoUsAndCurrent" ResizeDirection="columns"/>
</GrID>
</Expander>
<GrID DockPanel.Dock="left" BACkground="Green" HorizontalAlignment="Center" VerticalAlignment="Stretch">
<TextBlock Text="Test"/>
</GrID>
<Expander DockPanel.Dock="Right" VerticalAlignment="Stretch" header="PropertIEs" ExpandDirection="left" HorizontalAlignment="Right" WIDth="235">
<GrID WIDth="{Binding relativesource={relativesource Mode=FindAncestor,Path=ActualWIDth}">
<GrID.columnDeFinitions>
<columnDeFinition WIDth="2"/>
<columnDeFinition WIDth="auto"/>
</GrID.columnDeFinitions>
<GrIDSplitter GrID.column="0" WIDth="2" BACkground="{Dynamicresource borderBrush}" ResizeBehavior="PrevIoUsAndCurrent" ResizeDirection="columns"/>
<border GrID.column="1" WIDth="130"/>
</GrID>
</Expander>
</DockPanel>
</GrID>
如您所见,我使用了 DockPanel 来停靠控件,但我曾尝试使用带有 columnDeFinitions 的 GrID 来停靠它们,但我得到了相同的结果。那么谁能告诉我如何让应用程序在每一侧都有两个扩展器,中间有一个网格,并且能够调整扩展器的大小,从而也可以自动调整网格的大小?
使用 Grid
并将 GridSplitters
放在单独的列中:
<Grid>
<Grid.columnDefinitions>
<columnDefinition Width="Auto" />
<columnDefinition Width="5" />
<columnDefinition Width="*" />
<columnDefinition Width="5" />
<columnDefinition Width="Auto" />
</Grid.columnDefinitions>
<Expander x:Name="ProjectsExpander" Header="Projects" IsExpanded="True" ExpandDirection="Right">
<TextBlock>...</TextBlock>
</Expander>
<GridSplitter Grid.column="1" HorizontalAlignment="Stretch" />
<Grid Grid.column="2" BACkground="Yellow">
<TextBlock>...</TextBlock>
</Grid>
<GridSplitter Grid.column="3" HorizontalAlignment="Stretch" />
<Expander Grid.column="4" Header="Properties" ExpandDirection="Left" HorizontalAlignment="Right" Width="235">
<TextBlock>...</TextBlock>
</Expander>
</Grid>
,
如果您需要调整 Expander 内容的大小:
<Grid>
<Grid.columnDefinitions>
<columnDefinition Width="Auto"/>
<columnDefinition Width="*"/>
<columnDefinition Width="Auto"/>
</Grid.columnDefinitions>
<Expander Header="Projects" IsExpanded="True" ExpandDirection="Right" HorizontalAlignment="Left">
<Grid>
<Grid.columnDefinitions>
<columnDefinition Width="Auto"/>
<columnDefinition/>
</Grid.columnDefinitions>
<Grid Grid.column="0">
<Button Content="Left" Padding="15 5"/>
</Grid>
<GridSplitter Grid.column="1" Width="2" BACkground="Red" ResizeBehavior="PreviousAndCurrent"/>
</Grid>
</Expander>
<Grid DockPanel.Dock="Left" BACkground="Green" HorizontalAlignment="Center" VerticalAlignment="Stretch"
Grid.column="1">
<TextBlock Text="Test"/>
</Grid>
<Expander VerticalAlignment="Stretch" Header="Properties" ExpandDirection="Left" HorizontalAlignment="Right"
Grid.column="2">
<Grid>
<Grid.columnDefinitions>
<columnDefinition/>
<columnDefinition Width="Auto"/>
</Grid.columnDefinitions>
<GridSplitter Grid.column="0" Width="2" BACkground="Red" ResizeBehavior="CurrentAndNext"
HorizontalAlignment="Right"/>
<Border Grid.column="1" BACkground="Aqua" MinWidth="50"/>
</Grid>
</Expander>
</Grid>
以上是大佬教程为你收集整理的WPF 如何仅使用 XAML 构建停靠的可调整大小的扩展器和网格?全部内容,希望文章能够帮你解决WPF 如何仅使用 XAML 构建停靠的可调整大小的扩展器和网格?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。