0

я пытался сохранить пропорции элементов (Border) при помощи матана, но это не увенчалось успехом, так что хотелось узнать, как лучше и грамотнее реализовать подгон интерфейса как должно выглядеть при любом размере окна как получается

  • Опишите задачу подробнее, какую именно пропорцию вы хотите сохранить? – Андрей NOP Sep 11 '23 at 10:46
  • я бы хотел сохранить относительный размер фрагментов, те, чтобы при изменении размера окна общий вид сохранялся (при уменьшении окна уменьшались и элементы а при увеличении увеличивались) – TABURELTER Sep 11 '23 at 11:42
  • То, что у вас сверху все сплющилось означает то, что вы не так разместили элементы, не так настроили сетку. Если вам надо, чтобы у элементов менялся размер, то используйте ViewBox. – EvgeniyZ Sep 11 '23 at 11:56

1 Answers1

0

решение в лоб - стандартными средствами:

<Grid Name="grdBody">
    <Grid.RowDefinitions>
        <RowDefinition Height="1*"/>
        <RowDefinition Height="5*"/>
        <RowDefinition Height="5*"/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="1*"/>
        <ColumnDefinition Width="1*"/>
        <ColumnDefinition Width="1*"/>
        <ColumnDefinition Width="1*"/>
        <ColumnDefinition Width="1*"/>
        <ColumnDefinition Width="1*"/>
    </Grid.ColumnDefinitions>
&lt;Border Name=&quot;brd1&quot; Grid.Column=&quot;0&quot; Grid.Row=&quot;0&quot; Grid.ColumnSpan=&quot;6&quot; Grid.RowSpan=&quot;1&quot; Background=&quot;RosyBrown&quot; SizeChanged=&quot;brd1_SizeChanged&quot;&gt;
    &lt;Label Name=&quot;lbl1&quot; Margin=&quot;0,2,0,2&quot; Padding=&quot;4&quot; Background=&quot;Brown&quot; HorizontalAlignment=&quot;Center&quot; Content=&quot;Time and Day&quot; VerticalAlignment=&quot;Center&quot;/&gt;
&lt;/Border&gt;

&lt;Border Name=&quot;brd2&quot; Grid.Column=&quot;0&quot; Grid.Row=&quot;1&quot; Grid.ColumnSpan=&quot;2&quot; Grid.RowSpan=&quot;1&quot; Background=&quot;Wheat&quot;&gt;
    &lt;Label Name=&quot;lbl2&quot; Margin=&quot;0,2,0,2&quot; Padding=&quot;4&quot; Background=&quot;Brown&quot; HorizontalAlignment=&quot;Center&quot; Content=&quot;weather day&quot; VerticalAlignment=&quot;Center&quot;/&gt;
&lt;/Border&gt;
&lt;Border Name=&quot;brd3&quot; Grid.Column=&quot;2&quot; Grid.Row=&quot;1&quot; Grid.ColumnSpan=&quot;4&quot; Grid.RowSpan=&quot;1&quot; Background=&quot;LightBlue&quot;&gt;
    &lt;Label Name=&quot;lbl3&quot; Margin=&quot;0,2,0,2&quot; Padding=&quot;4&quot; Background=&quot;Brown&quot; HorizontalAlignment=&quot;Center&quot; Content=&quot;weather weak&quot; VerticalAlignment=&quot;Center&quot;/&gt;
&lt;/Border&gt;

&lt;Border Name=&quot;brd4&quot; Grid.Column=&quot;0&quot; Grid.Row=&quot;2&quot; Grid.ColumnSpan=&quot;3&quot; Grid.RowSpan=&quot;1&quot; Background=&quot;Silver&quot;&gt;
    &lt;Label Name=&quot;lbl4&quot; Margin=&quot;0,2,0,2&quot; Padding=&quot;4&quot; Background=&quot;Brown&quot; HorizontalAlignment=&quot;Center&quot; Content=&quot;NET чотатам&quot; VerticalAlignment=&quot;Center&quot;/&gt;
&lt;/Border&gt;
&lt;Border Name=&quot;brd5&quot; Grid.Column=&quot;3&quot; Grid.Row=&quot;2&quot; Grid.ColumnSpan=&quot;3&quot; Grid.RowSpan=&quot;1&quot; Background=&quot;DarkBlue&quot;&gt;
    &lt;Label Name=&quot;lbl5&quot; Margin=&quot;0,2,0,2&quot; Padding=&quot;4&quot; Background=&quot;Brown&quot; HorizontalAlignment=&quot;Center&quot; Content=&quot;app status&quot; VerticalAlignment=&quot;Center&quot;/&gt;
&lt;/Border&gt;

</Grid>

и

    private void brd1_SizeChanged(object sender, SizeChangedEventArgs e)
    {
        double h1 = brd1.ActualHeight;
        if (h1 < 18 || double.IsNaN(h1) || double.IsInfinity(h1))
            return;
    double h2 = h1 - 18;
    lbl1.FontSize = h2;
    lbl2.FontSize = h2;
    lbl3.FontSize = h2;
    lbl4.FontSize = h2;
    lbl5.FontSize = h2; 
}

масштабирование текста исключительно от высоты 1й строки, а её высота - от высоты всего окна... но общий смысл, я думаю, понятен)

  • Тут кстати вы тоже пошли в такие дебри, когда можно было просто обернуть весь (или только нужные элементы) в стандартный ViewBox, задачка решается чисто XAML разметкой, а вы тут свои костыли пишете... Не, решение мб и уместно, но не представляю кто будет подобное писать) – EvgeniyZ Sep 11 '23 at 15:11