2013-02-07 49 views
0

我有一個問題,使彈出通知面板只佔用內部控件需要的空間量。WPF彈出面板佔用需要的空間

我的本錢:

<Grid> 
    <DockPanel Panel.ZIndex="1111" Grid.Column="0" Grid.Row="0" HorizontalAlignment="Stretch" Visibility="{Binding MessageVisibility}"> 
     <Button Visibility="Collapsed" Name="clickButton" Command="{Binding Path=CloseMessage}"/> 
     <Border Background="LightGray" CornerRadius="20" MouseDown="Border_MouseDown" BorderThickness="8" BorderBrush="CadetBlue"> 
      <Grid VerticalAlignment="Center" HorizontalAlignment="Center" Margin="20px"> 
       <ItemsControl Grid.Column="0" Grid.Row="0" ItemsSource="{Binding Messages}"> 
        <ItemsControl.ItemTemplate> 
         <DataTemplate> 
          <TextBlock TextBlock.TextAlignment="Center" Text="{Binding FallbackValue='Message'}"/> 
         </DataTemplate> 
        </ItemsControl.ItemTemplate> 
        <ItemsControl.ItemsPanel> 
         <ItemsPanelTemplate> 
          <StackPanel/> 
         </ItemsPanelTemplate> 
        </ItemsControl.ItemsPanel> 

       </ItemsControl> 

      </Grid> 
     </Border> 
    </DockPanel> 
    <DockPanel Panel.ZIndex="0"> 
... 
    </DockPanel> 
</Grid> 

我試圖讓第一隻DockPanel中佔用由ItemsControl中所需的空間。它似乎佔據了整個空間。設置寬度/高度將保持在中心,但不會讓它增長。

回答

0

從DockPanel更改爲Stackpanel並設置Hor/Vert對齊中心工作。

0

以下修改後的代碼可能會有所幫助,解決你的親

<Grid> 
      <Grid.RowDefinitions>    
       <RowDefinition/>    
       <RowDefinition/>    
      </Grid.RowDefinitions> 
     <Grid.ColumnDefinitions>   
      <ColumnDefinitions/> 
     </Grid.ColumnDefinitions>   

    <DockPanel Panel.ZIndex="1111" Grid.Column="0" Grid.Row="0" HorizontalAlignment="Stretch" Visibility="{Binding MessageVisibility}"> 
     <Button Visibility="Collapsed" Name="clickButton" Command="{Binding Path=CloseMessage}"/> 
     <Border Background="LightGray" CornerRadius="20" MouseDown="Border_MouseDown" BorderThickness="8" BorderBrush="CadetBlue"> 
      <Grid VerticalAlignment="Center" HorizontalAlignment="Center" Margin="20px"> 
       <ItemsControl Grid.Column="0" Grid.Row="0" ItemsSource="{Binding Messages}"> 
        <ItemsControl.ItemTemplate> 
         <DataTemplate> 
          <TextBlock TextBlock.TextAlignment="Center" Text="{Binding FallbackValue='Message'}"/> 
         </DataTemplate> 
        </ItemsControl.ItemTemplate> 
        <ItemsControl.ItemsPanel> 
         <ItemsPanelTemplate> 
          <StackPanel/> 
         </ItemsPanelTemplate> 
        </ItemsControl.ItemsPanel> 

       </ItemsControl> 

      </Grid> 
     </Border> 
    </DockPanel> 
    <DockPanel Panel.ZIndex="0" Grid.Column="0" Grid.Row="1"> 
... 
    </DockPanel> 
</Grid>