WPF 调整大小,同时保持固定高度

本文关键字:高度 调整 WPF | 更新日期: 2023-09-27 17:56:07

我有一个正在处理的 WPF 应用程序,并且正在使用图像构建表单...不过,我在调整表单大小时遇到了问题。

问题是,对于顶部的各个行背景,我需要将高度保持在固定大小,同时允许宽度调整大小以适应窗口......但是,每当我尝试放置高度或最大高度值或类似值时,图像控件都会完全停止适合窗口。

现在我可能完全错误地处理这个问题,因为我对 WPF 很陌生,所以如果有人有更好的方法来做到这一点,请告诉我。

这是我到目前为止使用的 XAML,问题出在 TitleBarImage 上:

<Window x:Class="App.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Application" Height="{Binding SystemParameters.PrimaryScreenHeight}" Width="{Binding SystemParameters.PrimaryScreenWidth}" AllowsTransparency="True" WindowStyle="None" MinWidth="1024" MinHeight="749" WindowStartupLocation="CenterScreen">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <Image x:Name="TitleBarImage" Grid.Row="0" Grid.ColumnSpan="3" HorizontalAlignment="Stretch" VerticalAlignment="Top" Source="skin/title-bar.png" MouseLeftButtonDown="TitleBarImage_MouseLeftButtonDown" MouseDown="TitleBarImage_MouseDoubleClick"/>
        <Image HorizontalAlignment="Right" Grid.Row="0" Grid.Column="2" Height="23" Margin="0,17,74,0" VerticalAlignment="Top" Width="34" Source="skin/min-button.png" MouseLeftButtonUp="MinImage_MouseLeftButtonUp"/>
        <Image HorizontalAlignment="Right" Grid.Row="0" Grid.Column="2" Height="23" Margin="0,17,40,0" VerticalAlignment="Top" Width="34" Source="skin/max-button.png" MouseLeftButtonUp="MaxImage_MouseLeftButtonUp"/>
        <Image HorizontalAlignment="Right" Grid.Row="0" Grid.Column="2" Height="23" Margin="0,17,7,0" VerticalAlignment="Top" Width="33" Source="skin/close-button.png" MouseLeftButtonUp="Image_MouseLeftButtonUp_1" RenderTransformOrigin="21.121,-4.522"/>
    </Grid>
</Window>

WPF 调整大小,同时保持固定高度

您需要将

图像上的 Stretch 属性设置为 Fill,否则它将保持其原始纵横比并且无法正确适合该区域。

<Image ... Stretch="Fill"/>