WPF Grids - как сохранить ширину столбца при изменении размера окна? - PullRequest
0 голосов
/ 23 октября 2011

У меня есть эта разметка XAML ...

<Grid Name="ProductsGrid" Width="500">
        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Name="ProductList" Width="*" />
            <ColumnDefinition Name="ProductInfo" Width="100" MinWidth="10" MaxWidth="100"/>
        </Grid.ColumnDefinitions>

Когда приложение запускается, второй столбец имеет ширину до 100 "единиц".

Когда размер окна изменяется, столбец увеличивается и уменьшается - он сохраняет свое соотношение со столбцом 1, что, как мне кажется, должно произойти в WPF.Поэтому, когда приложение запускается, размер окна устанавливается на 500, а 2-й столбец составляет 1/5 от общей ширины.Поскольку приложение изменяет размеры, оно сохраняет 1/5 от общей ширины. Однако в этом примере я хочу, чтобы оно оставалось на уровне 100 единиц.

Есть идеи?

Ответы [ 2 ]

1 голос
/ 23 октября 2011

Попробуйте это

<Grid Name="ProductsGrid"  ShowGridLines="True">
        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Name="ProductList" Width="*" />
            <ColumnDefinition Name="ProductInfo" Width="100" MinWidth="10" MaxWidth="100"/>
        </Grid.ColumnDefinitions>
    </Grid>

Вам необходимо удалить фиксированную ширину сетки.

Если вы хотите, чтобы ваше начальное окно имело размер 500, вы можете обработать window loaded event и установитьразмер от window до 500. Не указывайте размер кода Grid в коде или XAML, в противном случае вы снова столкнетесь с той же проблемой

 private void mywindow_Loaded(object sender, RoutedEventArgs e)
            {
                this.Width = 500;
            }
1 голос
/ 23 октября 2011

Удалите ширину сетки, она фиксирует ширину сетки, ширина сетки остается 100 ... задайте цвет фона сетки, если вы хотите увидеть фактическое местоположение сетки.

выможно зафиксировать начальную ширину главного окна равной 100 и оставить сетку без фиксированной ширины, чтобы обеспечить желаемое поведение

попробуйте это:

<Window x:Class="WpfApplication6.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow"  Width="100" x:Name="MyWindow">
    <Grid Name="ProductsGrid">
            <Grid.RowDefinitions>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Name="ProductList" Width="*" />
                <ColumnDefinition Name="ProductInfo" Width="100" MinWidth="10" MaxWidth="100"/>
            </Grid.ColumnDefinitions>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...