2014-02-04 6 views
0

У меня есть приложение WPF. Чтобы весь экран отображался на всех размерах экрана, я реализовал MinHeight, MinWidth & HorizontalAlignment = "Stretch" VerticalAlignment = "Stretch" в окне & Контейнеры тоже. Я сталкиваюсь с некоторыми проблемами, когда приложение работает на экранах с низким разрешением. Окно вырезается с правой стороны экрана - это не показывает Min, Max, Close btns также сверху справа.Размер окна окна окна WPF для разных разрешений

Если я добавлю код компоновки, тогда окно будет правильным во всех разрешениях, но оно сделает пустое пространство над Мейборной и ниже конца. При удалении их нет места, и все хорошо, но правая сторона вырезается на экранах с низким разрешением. И с ViewBox, пространство над и под макетом. Мой код XML похож следующим образом:

КОД ОБНОВЛЕНО

<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" > 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="*"/> 
      <RowDefinition Height="*"/> 
     </Grid.RowDefinitions> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="Auto"/> 
      <ColumnDefinition Width="*"/> 
     </Grid.ColumnDefinitions> 

     <!-- MENU BAR --> 
     <Menu Grid.Row="0" x:Name="myMnus" VerticalAlignment="Top" Cursor="Hand" HorizontalAlignment="Stretch" IsMainMenu="True" Grid.ColumnSpan="2"> 
      ............. 
     </Menu> 

     <ToolBarTray HorizontalAlignment="Stretch" Background="White" Margin="0,19,114,0" VerticalAlignment="Top" Grid.ColumnSpan="2" > 
      .............. 
     <ToolBarTray> 

     <TabControl Grid.Row="1" Name="tabControl1" HorizontalAlignment="Left" Margin="0,3,0,0" VerticalAlignment="Top" 
       TabStripPlacement="Bottom" Grid.RowSpan="2" BorderThickness="4,25,4,1" FontSize="13"> 
     </TabControl> 

     <TabControl Grid.Row="2" Name="tabControl4" HorizontalAlignment="Left" Margin="0,323,0,0" VerticalAlignment="Stretch" 
       TabStripPlacement="Bottom" BorderThickness="4,25,4,1" FontSize="13" Background="White" Width="227"> 
     </TabControl> 

     <TabControl TabStripPlacement="Bottom" MinHeight="415" MinWidth="480" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Grid.Row="1" Grid.Column="1" Name="tabChildContainer" Margin="227,3,207,0" BorderThickness="4,25,4,1" Grid.RowSpan="2" > 

     </TabControl> 

    </Grid> 

Я думал, что с помощью Stretch в HorizontalAlignment и VerticalAlignment вместе с MinWidth и MinHeight, что он будет занимать все доступное пространство по горизонтали и Вертикально. Но tabChildContainer TabControl не идет в правый конец, который должен идти на основе кода.

+0

Я удалил HorizontalAlignment = "Stretch" VerticalAlignment = "Stretch" tabControl1 и избавился от проблемы расширения ширины. Теперь нужно всего одно: оба tabControl1 и tabControl4 имеют одинаковую высоту. – Tvd

ответ

2

Это где начинается ваша проблема:

<Grid.ColumnDefinitions> 
    <ColumnDefinition Width="762.976"/> 
    <ColumnDefinition Width="751.024"/> 
    <ColumnDefinition Width="Auto"/> 
</Grid.ColumnDefinitions> 

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

Во-вторых, это очень необычно использовать ViewBox на всей вашей UI ... это не собирается помочь вам. Лучше всего просто удалить его и все ваши жестко закодированные размеры и в полной мере использовать значения "*" и "Auto" в вашем Grid. Когда элементы управления изменяют размер (или Grid изменяет их размеры) таким образом, не имеет значения, какое разрешение пользователь использует.

+0

О, спасибо, Шеридан, Сохраняя только 2 Cols & Rows 1 с Auto & 1 with *, помог мне по крайней мере избавиться от проблемы с разрешением. Но теперь есть еще один. Как вы можете узнать из кода, у меня есть 2 TabControls на левой стороне как на Row 1 2 соответственно, так и на обеих вкладках есть TreeViews. Когда дерево расширяет tabControl1, его ширина также увеличивается, но это не увеличивает ширину tabcontrol4. Аналогично, я хочу, чтобы Row 1 и 2 были одинаковой высоты. Я попытался использовать Auto, *, 2 *, но не получил ожидаемых результатов. Можете ли вы рассказать, как ее достичь. – Tvd

+0

Я удалил HorizontalAlignment = "Stretch" VerticalAlignment = "Stretch" tabControl1 и избавился от проблемы расширения ширины. Теперь нужно всего одно: оба tabControl1 и tabControl4 имеют одинаковую высоту. – Tvd

+0

Чувак, просто посмотрите на свое определение 'TabControl' ... у вас есть это:' Margin = "227,3,207,0", поэтому, конечно, он не пройдет весь путь до края. Удалите или уменьшите значения «Margin», и все должно быть хорошо. – Sheridan

Смежные вопросы