Установите размер сетки в размер Windows

#wpf #xaml #grid #window #size

#wpf #xaml #сетка #окно #размер

Вопрос:

У меня есть следующий код, чтобы точно подогнать сетку к окну. Как вы можете видеть на скриншоте, сетка выходит из окна в нижней и правой части. Ребята, вы хоть представляете, почему это происходит? и как это сделать правильно?

 <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"
        mc:Ignorable="d"
        Topmost="true"
        Background="Aqua"
        WindowStartupLocation="CenterScreen"
        DataContext="{Binding Main, Source={StaticResource Locator}}"
        Title="MainWindow" Height="500" Width="500">
    <Grid 
        Width="{Binding ActualWidth, RelativeSource = {RelativeSource AncestorType = {x:Type Window}}}" 
        Height="{Binding ActualHeight, RelativeSource ={RelativeSource AncestorType = {x:Type Window}}}">
        <Border Opacity=".9" BorderBrush="Blue" BorderThickness="2"/>
    </Grid>
</Window>
 

Сетка превышает содержащее окно.

Комментарии:

1. Почему вы устанавливаете ширину и высоту сетки? Попробуйте опустить их, если это возможно.

Ответ №1:

Если вы привяжете фактическую ширину и высоту окна, значение Grid будет превышать значение Window , поскольку область содержимого меньше, чем само окно. Удалите привязки. Размер Grid будет автоматически изменен, чтобы занять доступное пространство, если вы явно не задали Width значение и Height .

 <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"
        mc:Ignorable="d"
        Topmost="true"
        Background="Aqua"
        WindowStartupLocation="CenterScreen"
        DataContext="{Binding Main, Source={StaticResource Locator}}"
        Title="MainWindow" Height="500" Width="500">
    <Grid>
        <Border Opacity=".9" BorderBrush="Blue" BorderThickness="2"/>
    </Grid>
</Window>
 

Комментарии:

1. Спасибо. Тогда я это опущу. Если бы я когда-нибудь захотел изменить размер другого элемента по всему окну, например, изображения, расположенного ниже иерархии, как я мог бы тогда подогнать его к фактическому размеру содержимого?

2. @dasd-431 Это действительно зависит от того, как выглядит иерархия, общего ответа на этот вопрос нет.