SORU
8 Mayıs 2009, Cuma


Nasıl WPF penceresi ölçekli boyutlandırma sonra bir Genişletici ile içerik duruyorsun

SizeToContent="Height" WPF ile bir pencere var. Bu pencere son aktivite listesini görüntüler <Expander /> içerir. İstediğim genişletme pencere boyutu orantılı olarak büyür genişletilmiş olmasıdır. Yine pencere gizli olduğunda orantılı olarak yeniden boyutlandırır. Pencere yeniden boyutlandırıldığında genişletici ve kontrol altında eğer liste görünümü yeni alanı kullanmak için büyümek gerekir. (renkleri var orada yardım etmek için bana yardımcı olur bu rakam) yok:

Normal Görünüm

alt text

Çöktü

alt text

Yeni yer için yeniden boyutlandırılabilir

alt text

Şimdiye kadar bu harika çalışıyor. Sorun <Expander /> pencere yeniden boyutlandırıldığında sonra yıkılmış geliyor. Pencereyi tekrar çöken yerine, liste görünümü sadece gizli

Yeniden Boyutlandırma sonra çöktü

alt text

Benim sezgi pencere Height pencere yeniden boyutlandırıldığında, kurulmakta olduğunu söyledi ve böylece SizeToContent özelliği geçersiz kılar. Nasıl yeniden sonra pencerenin içeriğini davranış için boyutu tutmak için alabilir miyim?

Geçerli 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>

GÜNCELLEME:Expander Daraltılmış olay için dinleme ve Windows sıfırlamayı denedim SizeToContent özelliği. Bu, hemen hemen çalışır. Bu pencereyi tekrar çökmeye neden olur ama yine genişletilmiş zaman geri orijinal 100 piksel Yükseklik gider. Mümkün ve bu Bilgi Deposu yakalamak için olsa ve hataları için hacky yatkın kokuyor.

CEVAP
11 HAZİRAN 2009, PERŞEMBE


Eğer SizeToContent kullanmak için gidiyoruz eğer penceresi olmayan resizeable olun. Ayrıca, SizeToContent kullanmamalısın="Yükseklik", ve sonra açık bir Yüksekliği ayarlayın. Düşün bir WPF penceresi için inanmak gerekir, hangi yükseklikte, kullanıcı ayarı ya İçerik? Sadece geri dönün ve ileri ikisi arasında.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Blue Lightning TV

    Blue Lightni

    9 EKİM 2011
  • finalcall07

    finalcall07

    11 NİSAN 2008
  • Vintendo Power

    Vintendo Pow

    2 Ocak 2007