2014-01-26 7 views
0

Во-первых, я новичок в дизайне WPF. Во всяком случае, у меня есть расширитель, содержащий список, расположенный в нижней части моего окна. Когда расширитель сведен к минимуму, я хочу, чтобы первые два элемента в списке были видимыми, но когда он максимизирован, я хочу, чтобы он занимал всю высоту экрана. Я не уверен, как это сделать, и я буду очень признателен за любые намеки. Ниже приведен код, с которым мне приходится иметь дело до сих пор.Expander полная высота окна

  <Window x:Class="WPFPlay.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" 
    Height="300" 
    Width="300" 
    DataContext="{Binding Main, Source={StaticResource Locator}}" SizeToContent="Manual"> 
<Window.Resources> 
    <ControlTemplate x:Key="VerticalExpander" TargetType="{x:Type Expander}"> 
     <Border Name="ContentBorder" Width="0"> 
      <ContentPresenter /> 
     </Border> 
     <ControlTemplate.Triggers> 
      <Trigger Property="IsExpanded" Value="True"> 
       <Setter TargetName="ContentBorder" Property="Width" Value="Auto" /> 
      </Trigger> 
     </ControlTemplate.Triggers> 
    </ControlTemplate> 
    <ControlTemplate x:Key="HorizontalExpander" TargetType="{x:Type Expander}"> 
     <Border Name="ContentBorder" Width="0"> 
      <ContentPresenter /> 
     </Border> 
     <ControlTemplate.Triggers> 
      <Trigger Property="IsExpanded" Value="True"> 
       <Setter TargetName="ContentBorder" Property="Height" Value="Auto" /> 
      </Trigger> 
     </ControlTemplate.Triggers> 
    </ControlTemplate> 
</Window.Resources> 
<Grid> 
    <DockPanel LastChildFill="True"> 
     <Grid DockPanel.Dock="Right"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="*" /> 
       <ColumnDefinition Width="20" /> 
      </Grid.ColumnDefinitions> 
      <StackPanel Grid.Column="1" Orientation="Vertical"> 
       <Button Name="B1" Content="+" Click="B1_Click" /> 
      </StackPanel> 
      <DockPanel LastChildFill="True"> 
       <Grid Grid.Column="0" DockPanel.Dock="Right" HorizontalAlignment="Right"> 
        <Expander Name="MainExpander1" Template="{StaticResource VerticalExpander}" IsExpanded="False"> 
         <Border CornerRadius="6" BorderBrush="Gray" Background="LightGray" BorderThickness="2"> 
          <StackPanel> 
           <Label Content="Document1"/> 
           <Label Content="Document2"/> 
           <Label Content="Document3"/> 
          </StackPanel> 
         </Border> 
        </Expander> 
       </Grid> 
      </DockPanel> 
     </Grid> 
     <WrapPanel HorizontalAlignment="Center" DockPanel.Dock="Top"> 
      <TextBlock FontSize="14"> 
      <Bold> 
       <Run> 
        Header + Labels etc 
       </Run> 
      </Bold> 
      </TextBlock> 
     </WrapPanel> 
     <StackPanel DockPanel.Dock="Bottom"> 
      <Expander VerticalAlignment="Stretch" Name="StatusBarExpander" ExpandDirection="Up" IsExpanded="False"> 
       <StackPanel> 
       <ListBox> 
        <ListBoxItem Content="xxxxxxxxxxxxxxxxxxxx" /> 
        <ListBoxItem Content="yyyyyyyyyyyyyyyyyy" /> 
        <ListBoxItem Content="zzzzzzzzzzzzzzzzzzzz" /> 
       </ListBox> 
      </StackPanel> 
      </Expander> 
     </StackPanel> 
     <StackPanel DockPanel.Dock="Left"> 
      <Button Content="button1"/> 
      <Button Content="button2"/> 
      <Button Content="button3"/> 
      <Button Content="button4"/> 
     </StackPanel> 
     <!-- Centre of it all!!!--> 
     <ContentControl /> 
    </DockPanel> 

</Grid> 

ответ

0

Что касается вашего второго вопроса, Swtting в Expander.VerticalAlignment Протянуть будет делать трюк.

Что касается вашего первого вопроса. Элемент управления Expander наследуется от HeaderedContentControl, что означает, что у него есть свойство заголовка, которое вы можете настроить. Вы можете сделать это, установив HeaderTemplate в другой список, в котором будут отображаться только первые два элемента.

Similar question in Stack overflow

+0

привет, спасибо за ответ. Я попытался настроить VerticalAlignment и VerticalContentAlignment на растяжение, но расширитель не растягивается до высоты всего экрана. Он выходит не выше нижней части ContentControl, который у меня есть в центре экрана. Также есть панель для док-станции слева, справа и сверху экрана. – user1698316

+0

Может быть, вы можете опубликовать свой полный xaml здесь, чтобы Ican мог использовать его лучше. –

+0

Полный xaml, размещенный выше в соответствии с запросом. Большое спасибо. Примечание: B1_Click находится в коде позади, и он просто скрывает или показывает расширитель в правой панели док-станции. – user1698316

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