程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了WPF 如何仅使用 XAML 构建停靠的可调整大小的扩展器和网格?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决WPF 如何仅使用 XAML 构建停靠的可调整大小的扩展器和网格??

开发过程中遇到WPF 如何仅使用 XAML 构建停靠的可调整大小的扩展器和网格?的问题如何解决?下面主要结合日常开发的经验,给出你关于WPF 如何仅使用 XAML 构建停靠的可调整大小的扩展器和网格?的解决方法建议,希望对你解决WPF 如何仅使用 XAML 构建停靠的可调整大小的扩展器和网格?有所启发或帮助;

我正在尝试构建一个 wpf 应用程序,它有两个扩展器,一个在左边,另一个在右边,它们之间有网格。扩展器必须能够相应地调整自身大小,自动调整它们之间的网格大小,如下所示。

WPF 如何仅使用 XAML 构建停靠的可调整大小的扩展器和网格?

在下面粘贴一些 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,请注明来意。