簡體   English   中英

WPF 控件是否可以以其父控件為中心,但也可以僅使用 xaml 尊重其兄弟控件的 position?

[英]Can a WPF control be centered around its parent but also respect the position of its sibling control using xaml only?

我試圖在 xaml 屏幕上相對於整個屏幕將模態彈出式控件居中,但如果控件太大,中央控件也會被兄弟(側面板)推開兩個會相交。 這對於代碼隱藏、數據綁定、數據觸發器、自定義控件和其他不太優雅的方法是可行的,但是有沒有辦法只用 xaml 開箱即用地解決這個問題?

這是問題的一個大大簡化的版本,它是一個帶有兩個矩形的 window。 橙色矩形始終為 200 像素。 綠色矩形的大小是可變的,但從不大於 600 像素。 我們可以讓綠色矩形在屏幕上居中,除非它足夠寬以至於它會與橙色矩形發生碰撞,在這種情況下綠色矩形被布置在橙色矩形的右側(就像一個堆棧面板)? 綠色和橙色的矩形可以放置到您想要的任何容器中,並且可以以您想要的任何方式嵌套容器。

<Window x:Class="WpfApp1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp1"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid Width="800">

            <Rectangle Width="200" Fill="Orange" HorizontalAlignment="Left" ></Rectangle>
            <Rectangle Width="300" Fill="Green" HorizontalAlignment="Center"></Rectangle>
    </Grid>
           
</Window>

沒有內置的方法可以做到這一點,但是這種方法有效並且相當簡單:

    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition MinWidth="200"/>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <Rectangle Width="200" Fill="Orange" HorizontalAlignment="Left" /> 
        <Rectangle Grid.Column="1" Width="300" Fill="Green" HorizontalAlignment="Center"/>
    </Grid>

如果你不想復制橙色矩形的寬度,你可以這樣做:

    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition MinWidth="{Binding ElementName=OrangeRectangle, Path=ActualWidth}"/>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <Rectangle x:Name="OrangeRectangle" Width="200" Fill="Orange" HorizontalAlignment="Left" /> 
        <Rectangle Grid.Column="1" Width="300" Fill="Green" HorizontalAlignment="Center"/>
    </Grid>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM