2016-02-17 3 views
0

Хорошо, поэтому я разрабатываю приложение WPF C#. MainWindow для этого приложения всегда полноэкранный, но мне нужно настроить элементы управления на основе разрешения. Во всяком случае, я попробовал немало вещей, чтобы добиться этого. Прямо сейчас, я установил длину сетки & шириной до Auto. Проблема в том, что по какой-то причине мои элементы управления смещаются вверх и влево. Ниже мой MainWindowXAML. (BTW: Окно содержит: кнопки изображения, этикетки, прямоугольники и TextBoxes):Сделать интерфейс WPF свободным от размера дисплея

<Window x:Name="Menu" x:Class="App.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 

    Title="App1" FontWeight="Bold" Icon="Images/Core-IconSize.ico" WindowStartupLocation="CenterScreen" WindowStyle="ThreeDBorderWindow" WindowState="Maximized" ResizeMode="CanMinimize" Height="870" Width="1388"> 

    <Grid > 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="Auto"/> 
      <ColumnDefinition Width="Auto"/> 
     </Grid.ColumnDefinitions> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="Auto"/> 
     </Grid.RowDefinitions> 
    //Controls here. 
    </Grid> 
</Window> 

Edit: Добавлен XAML для элементов управления.

+0

Вы должны добавить XAML со всеми элементами управления, чтобы мы могли прокомментировать эту проблему. –

+0

@ Xtreme_Enigma Хорошо, я добавлю его ... –

+0

@ Xtreme_Enigma добавила его. –

ответ

1

Похоже, вы хотите, чтобы ваши органы управления масштабировались вверх или вниз, если размер экрана отличается; а не просто сдвинуть позиции.

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

Кроме того, вы можете удалить свойства высоты и ширины из своего окна, поскольку они являются избыточными для полноэкранного приложения. Если вы хотите получить определенный размер при редактировании окна в XAML, вы можете установить свойства designheight и designwidth.

Пример безViewbox:

<Window x:Class="MVVM_Exploration.Windows.wndDataGrid" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="wndDataGrid" Height="300" Width="500"> 
    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="Auto"/> 
     </Grid.RowDefinitions> 
     <StackPanel Grid.Row="0" Orientation="Horizontal"> 
     <Button Content="Load Text File" HorizontalAlignment="Left" 
       Margin="10" Click="LoadTextFile"/> 
      <Button Content="Save Text File" HorizontalAlignment="Left" 
        Margin="10" Click="SaveTextFile"/> 
     </StackPanel> 
     <TextBlock Grid.Row="1" Text="Some content here"/> 
     <Button Content="Another Button" Grid.Row="2" 
         HorizontalAlignment="Left"/> 
    </Grid> 
</Window> 

enter image description here

Пример сViewbox:

<Window x:Class="MVVM_Exploration.Windows.wndDataGrid" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="wndDataGrid" Height="300" Width="500"> 
    <Viewbox> 
    <Grid Width="200" Height="100"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="Auto"/> 
     </Grid.RowDefinitions> 
     <StackPanel Grid.Row="0" Orientation="Horizontal"> 
     <Button Content="Load Text File" HorizontalAlignment="Left" 
       Margin="10" Click="LoadTextFile"/> 
      <Button Content="Save Text File" HorizontalAlignment="Left" 
        Margin="10" Click="SaveTextFile"/> 
     </StackPanel> 
     <TextBlock Grid.Row="1" Text="Some content here"/> 
     <Button Content="Another Button" Grid.Row="2" 
         HorizontalAlignment="Left"/> 
    </Grid> 
    </Viewbox> 
</Window> 

enter image description here

В зависимости от того, как настроена ваша сетка и ее содержимое, вам может не потребоваться предоставить реальную сетку определенного размера.

+0

Я пробовал это, и он работает _not_ для меня. –

+0

Возможно, вам придется поиграть со своим размером сетки и настройками строк и столбцов сетки, чтобы это хорошо работало. По умолчанию сетка представляет собой объект с автоматическим размером, поэтому его размещение внутри окна просмотра не приведет к хорошим результатам, если вы не придадите сетке фиксированный размер. Тогда в окне просмотра есть что поработать для масштабирования. – Stewbob

+0

На самом деле я почти не знаю, как это сделать, извините. –

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