Помогите с моим макетом WPF - PullRequest
3 голосов
/ 22 августа 2010

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

<Grid>
  <Grid.RowDefinitions>
    <RowDefinition Height="Auto"/> 
    <RowDefinition Height="*"/>
  </Grid.RowDefinitions>
  <Grid.ColumnDefinitions>
    <ColumnDefinition Width="*"></ColumnDefinition> <!--What i actually want to say here isn't "take all remaining space" but "take all remaining space without scrolling, 
                                                    and then scroll based on everything as if this was auto and no longer *-->
    <ColumnDefinition Width="Auto"></ColumnDefinition><!--But what happens for now is that since this is auto , it will not scroll at all untill the * column has fully scrolled-->
  </Grid.ColumnDefinitions>
  <StackPanel>
    <StackPanel Orientation="Horizontal">
      <Label></Label>
      <TextBox></TextBox>
    </StackPanel>
  </StackPanel>
  <StackPanel Grid.Column="1">
    <StackPanel Orientation="Horizontal">
      <button> <!-- I want the button's container to be in an auto column , don't 
               want it to take size away from the fields unless needed but don't
               want it to stay visible at the expense of the fields either -->
    </StackPanel>
  </StackPanel>
  <TelerikGrid:RadGridView Grid.Row="1" Grid.ColumnSpan="2">
    <TelerikGrid:RadGridView.Columns>
      <TelerikGrid:GridViewDataColumn Width="*"/>  <!--  This makes my grid take a bajillon kilometers because it itself is in a Grid's column of * size itself in a scrollviewer -->
    </TelerikGrid:RadGridView.Columns>
  </TelerikGrid:RadGridView>
</Grid>

1 Ответ

1 голос
/ 23 августа 2010

Трудно сказать, учитывая, что я не могу загрузить ваш элемент управления GridView в окне.

Я рекомендую встраивать Grid диспетчера макетов для ваших элементов управления в Grid, чтобы создать разделение между вашими элементами управления и GridView. Вам также следует рассмотреть возможность объединения всех элементов управления в одной StackPanel или другом менеджере макетов.

Несмотря на это, этот макет дает вам разделение между элементами управления и GridView независимо от того, какой вы выбрали менеджер компоновки, без необходимости указывать диапазон столбцов.

<Grid> 
  <Grid.RowDefinitions> 
    <RowDefinition Height="Auto"/>  
    <RowDefinition Height="*"/> 
  </Grid.RowDefinitions> 
  <Grid.ColumnDefinitions> 
    <ColumnDefinition />
  </Grid.ColumnDefinitions> 

  <!-- Place a layout Grid inside your Grid to deal with controls -->
  <Grid Grid.Column="0" Grid.Row="0">
    <Grid.RowDefinitions>
       <RowDefinition/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
       <ColumnDefinition />
       <ColumnDefinition Width="Auto"/>
    </Grid.ColumnDefinitions>

    <!-- Removed your nested stack panel -->  
    <StackPanel Grid.Column="0" Grid.Row="0" Orientation="Horizontal"> 
      <Label></Label> 
      <TextBox></TextBox> 
    </StackPanel> 
    <StackPanel Grid.Column="1" Grid.Row="0" Orientation="Horizontal"> 
      <Button /> 
    </StackPanel> 
  </Grid>

  <!-- Add a spilter bar here  -->

  <!-- No need to span 2 columns anymore...  -->
  <TelerikGrid:RadGridView Grid.Column="0" Grid.Row="1" > 
    <TelerikGrid:RadGridView.Columns> 
      <TelerikGrid:GridViewDataColumn Width="*"/>  
    </TelerikGrid:RadGridView.Columns> 
  </TelerikGrid:RadGridView> 

  <!-- Add a status bar here -->

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