C # WPF ширина окна, максимальная ширина, минимальная ширина игнорируется - PullRequest
2 голосов
/ 16 марта 2011

У меня есть окно WPF, определенное в XAML следующим образом:

<Window x:Class="com.some.company.window"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="My Cool Window" 
x:Name="CoolWindow"
Height="435"
Width="70"
MinWidth="70"
MaxWidth="70"
Left="{PropertyState Default=0}"
Top="{PropertyState Default=0}"
Initialized="InitializeWindow"
ResizeMode="NoResize"  
Style="{DynamicResource DefaultWindow}">
.....
.....
</Window>

Проблема в том, что когда окно создается и отображается на экране - оно ВСЕГДА больше, чем 70 пикселей, которые я указал вопределение ширины.Ширина, вероятно, составляет 80-90 пикселей.Мои атрибуты ширины игнорируются.Ни одно из содержимого внутри окна также не превышает 70 пикселей.

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

РЕДАКТИРОВАТЬ: Когда я добавляю WindowsStyle = "None" в атрибут Window, ширина правильно устанавливается в 70 пикселей.Тем не менее, это не тот стиль, который я хочу для Window.

Спасибо

Ответы [ 3 ]

4 голосов
/ 16 марта 2011

Вы установили MinWidth на 70, и поэтому размер вашего Window не может быть меньше этого.Кстати, из-за блока управления его ширина имеет минимальный предел 132.

Если мы установим WindowStyle="none" для удаления заголовка и блока управления, мы можем сделать Window еще меньше.

<Window x:Class="WpfApplicationUnleashed.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:local="clr-namespace:WpfApplicationUnleashed"
        Title="" WindowStyle="None" Width="70">
    <Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
    </Grid>
</Window>

РЕДАКТИРОВАТЬ

Чтобы сделать ширину окна равной 70, а кнопка закрытия, текст заголовка все еще видимым и без изменения размера используйте это:

<Window x:Class="WpfApplicationUnleashed.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:local="clr-namespace:WpfApplicationUnleashed"
        Title="My Window" WindowStyle="ToolWindow" Width="70" ResizeMode="NoResize">
    <Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
    </Grid>
</Window>

Поскольку ширина 70 очень мала, у вас не может быть кнопки сворачивания и увеличения, а также кнопки закрытия.

2 голосов
/ 16 марта 2011

70, которое вы указали, не в пикселях.WPF работает с точками и фактически устанавливает размеры окна в пиксели на основе разрешения экрана (точек на дюйм).

0 голосов
/ 16 марта 2011

Я смог сделать то, что хотел, добавив WindowStyle = "ToolWindow" и ResizeMode = "NoResize". Это позволило мне сохранить заголовок и кнопку закрытия, в то время как ширина окна могла быть установлена ​​на уровне 70 пт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...