Wie behälst du das WPF-Fenster nach der Größenänderung auf Inhalt mit einem Expander

Ich habe ein WPF-Fenster mit SizeToContent="Height". Dieses Fenster enthält eine <Expander /> zeigt eine Liste der letzten Aktivitäten. Was ich möchte ist, wenn der expander erweitert das Fenster wächst in der Größe proportional. Wenn Sie versteckt das Fenster wieder ändert sich die Größe proportional. Wenn das Fenster geändert wird, kann der expander und es enthalten Listenansicht wachsen soll, verwenden Sie den neuen Raum. (nicht Sinn der Farben gibt es, um mir zu helfen dies herauszufinden):

Normalen Ansicht

alt-text http://www.deploylx.com/so/wpfexpander/Open.png

Zusammengebrochen

alt-text http://www.deploylx.com/so/wpfexpander/Closed.png

Angepasst, um neuen Raum

alt-text http://www.deploylx.com/so/wpfexpander/Expanded.png

Bisher in diesem großen Werke. Das problem kommt, wenn die <Expander /> ist zusammengebrochen, nachdem das Fenster in der Größe geändert wird. Anstatt die Fenster Zuklappen, wieder, der Liste, der Blick ist einfach ausgeblendet:

Brach nach Größe

alt-text http://www.deploylx.com/so/wpfexpander/Collapsed.png

Meine intuition sagt mir, dass die Height des Fensters wird gesetzt, wenn das Fenster ändert und somit überschreibt die SizeToContent Eigenschaft. So, wie bekomme ich die Fenster zu halten, es ist eine Größe, Inhalt, Verhalten, nachdem es geändert wurde?

Aktuelle XAML:

<Window x:Class="DeployLX.Licensing.Nlm.Admin.v3.DashboardWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Dashboard" Width="504" SizeToContent="Height" Height="275">

  <DockPanel>
    <Menu DockPanel.Dock="Top">
      <MenuItem Header="_File">
        <MenuItem Header="E_xit" Command="{Binding Path=CloseCmd}" />
      </MenuItem>
    </Menu>
    <Grid DockPanel.Dock="Top" Margin="8" ShowGridLines="True">
      <Grid.RowDefinitions>
        <RowDefinition />
        <RowDefinition />
      </Grid.RowDefinitions>
      <Grid.ColumnDefinitions>
        <ColumnDefinition />
        <ColumnDefinition />
      </Grid.ColumnDefinitions>

      <Grid Grid.RowSpan="2" Grid.Row="0" Grid.Column="0" Margin="0,0,8,0">
        <Rectangle Fill="Red" />
        <TextBlock>ActiveCount</TextBlock>        
      </Grid>

      <Grid Grid.Row="0" Grid.Column="1" Margin="0,0,0,4">
        <Rectangle Fill="Green" />
        <TextBlock>Authorization</TextBlock>
      </Grid>
      <Grid Grid.Row="1" Grid.Column="1" Margin="0,4,0,0">
        <Rectangle Fill="Blue" />
        <TextBlock>Authorization</TextBlock>
      </Grid>      
    </Grid>
    <Expander Header="Recent Activity" Margin="8" IsExpanded="True">
      <ListView IsSynchronizedWithCurrentItem="True" MinHeight="100">
        <ListView.View>
          <GridView>
            <GridViewColumn Header="Status"/>
          </GridView>
        </ListView.View>
      </ListView>
    </Expander>
  </DockPanel>
</Window>

UPDATE: ich habe versucht, das hören auf den reduzierten Ereignis des Expanders und das zurücksetzen der Windows SizeToContent Eigenschaft. Diese fast funktioniert. Es führt zu einem Zusammenbruch wieder aus dem Fenster, aber wenn wieder erweitert geht es wieder auf die ursprünglichen 100 pixel Höhe. Es ist zwar denkbar, speichern und erfassen diese info, es riecht hacky und anfällig für Fehler.

InformationsquelleAutor der Frage Paul Alexander | 2009-05-08

Schreibe einen Kommentar