Почему мои элементы управления WPF не масштабируются, когда мое окно развернуто при касании верхней части экрана в Windows 7? - PullRequest
2 голосов
/ 17 октября 2011

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

Я настроил его на вызов метода для события sizeChanged, который устанавливает размерсетка относительно окна (заполняет все окно, кроме 10 пикселей на каждом ребре).Сначала я думал, что событие sizeChanged не запускается, поэтому я создал поток, чтобы просто определить, было ли максимизировано значение windowState.При обнаружении он просто запускает метод для увеличения размера сетки.Метод запустился, но размер сетки не изменился.Только этот метод максимизации является проблемой.

Как мне исправить эту проблему?

Редактировать: XAML

 <Window.Background>
    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
        <GradientStop Color="#FF868686" Offset="0" />
        <GradientStop Color="Black" Offset="1" />
    </LinearGradientBrush>
</Window.Background>
<Grid Background="{x:Null}" Name="baseGrid">
    <Grid Height="342" HorizontalAlignment="Stretch" Name="grid1" VerticalAlignment="Stretch" Width="718" Background="#46BA0000">
        <Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="6,6,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="maximize" />
    </Grid>
</Grid>

Я тожеиспользуя стиль и тему в моем приложении, но эта проблема возникает, даже если они не задействованы, поэтому я не включил их в XAML

1 Ответ

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

Одно из решений, которое вы можете попробовать, - это установить VerticalAlignment = "Stretch" и HorizontalAlignment = "Stretch" в элементе управления сеткой

Другое решение - использовать e.NewSize.Width и e.NewSize.Height для расчетавысота и ширина сетки в обработчике событий SizeChanged в Window.

...