2015-11-21 4 views
0

Я пытаюсь выяснить, как изменить размер моей C# WPF программы, чтобы по существу соответствовать любому разрешению экрана. Я пытаюсь установить свою программу на компьютер с разрешением экрана 1280 x 1024. Я не могу найти какую-либо информацию о том, как это сделать в точности, конечно, я мог бы установить размеры программы в соответствии с конкретным экраном, но разрешение экрана каждого компьютера может быть потенциально иным? Я попытался использовать очевидное решение, которое было здесь представлено: Resize WPF Window and contents depening on screen resolution, но это совсем не помогло.Как изменить размер C# WPF программы, чтобы соответствовать любому разрешению экрана

т.е. я использовал: (. Кроме того, я не был уверен, что мне нужно, чтобы установить HorizontalAlignment & VerticalAlignment "растянуть", а, но я все равно)

Title="my screen" Height="{Binding SystemParameters.PrimaryScreenHeight}" Width="{Binding SystemParameters.PrimaryScreenWidth}" WindowStartupLocation="CenterScreen" WindowState="Maximized"> 
    <Grid Name="myGrid" Background="LightGray" Margin="0,0,2,-30" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> 
     <TextBox Name="stuffTB" HorizontalAlignment="Left" Height="28" Margin="751,252,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="186" /> 

...

Всякий раз, когда я запускаю свой exe ​​ на компьютере с размерами 1280 x 1024 он отсекает содержимое, которое находится в моей сетке. Любые советы или помощь были бы замечательными, даже ссылки на примеры были бы потрясающими. Заранее спасибо.

+0

Почему бы не просто увеличить его? –

+0

Вы имеете в виду WindowState = "Максимизировано"? Если это то, о чем вы говорите, проверьте код в OP, который я предоставил. –

+0

Вам нужно уточнить, что вы подразумеваете под «изменением размера», а также, возможно, «разрешением». Строго говоря, 1280 x 1024 - это размер в пикселях, а не разрешение. Вероятно, то, что вы хотите, отличается от окна ввода данных, в отличие от приложения для редактирования фотографий. Возможно, вам нужно также прочитать независимые от устройства модули в WPF. – peterG

ответ

0

Если вы действительно хотите, чтобы заставить изменить размер всех элементов управления в окнах можно использовать ViewBox https://msdn.microsoft.com/pl-pl/library/system.windows.controls.viewbox%28v=vs.110%29.aspx

Но IMO вы делаете это неправильно. Основы проектирования хороший WPF UI будет:

  1. Использование сетки столбцов и строк, если вы хотите что-то, чтобы держать некоторую часть/процент окна, несмотря на содержание
  2. Используйте DockPanels, StackPanels, WrapPanels и т.д. ето организовать Пользовательский интерфейс
  3. Использование ScrollViewer, чтобы быть в состоянии видеть элементы управления, если у них есть какие-то минимальные размеры, установленные и на определенное разрешение они получили бы отрезать

Посмотрите на этом примере я создал для вас

<Grid> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*" /> 
      <ColumnDefinition Width="2*" /> 
     </Grid.ColumnDefinitions> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="100" /> 
      <RowDefinition Height="*" /> 
     </Grid.RowDefinitions> 
     <StackPanel Grid.Row="0" Grid.ColumnSpan="2" Background="Blue" Orientation="Horizontal"> 
      <Button>Button</Button> 
      <Button>Button</Button> 
      <Button>Button</Button> 
     </StackPanel> 
     <DockPanel Grid.Row="1" Grid.Column="1"> 
      <Rectangle DockPanel.Dock="Right" Width="100" Fill="Red"></Rectangle> 
      <Ellipse DockPanel.Dock="Left" Fill="AliceBlue"></Ellipse> 
     </DockPanel> 
     <ScrollViewer Grid.Row="1"> 
      <StackPanel> 
       <Button Height="200"></Button> 
       <Button Height="200"></Button> 
       <Button Height="200"></Button> 
       <Button Height="200"></Button> 
       <Button Height="200"></Button> 
       <Button Height="200"></Button> 

       <Button Height="200"></Button> 
       <Button Height="200"></Button> 
      </StackPanel> 
     </ScrollViewer> 
    </Grid> 
Смежные вопросы