私はSizeToContent="Height"
のWPFウィンドウを持っています。このウィンドウには、最近アクティビティのリストを表示する<Expander />
が含まれています。私が望むのは、エキスパンダーを拡大してウィンドウのサイズが比例して大きくなるときです。非表示にすると、ウィンドウは再び比例してサイズが変更されます。ウィンドウがリサイズされている場合は、エキスパンダーとそれに含まれるリストビューは、新しいスペースを使用するために拡大する必要があります。 (私はこれを理解を助けるためにそこに色を気にしない):どのようにWPFウィンドウのサイズを変更した後のエクスパンダでコンテンツのサイズを維持しますか
ノーマルビュー
alt text http://www.deploylx.com/so/wpfexpander/Open.png
は新しいにリサイズ
alt text http://www.deploylx.com/so/wpfexpander/Closed.png
を折りたたみスペース
alt text http://www.deploylx.com/so/wpfexpander/Expanded.png
これまでのところ素晴らしいです。問題は、ウィンドウのサイズを変更した後に<Expander />
が折りたたまれているときに発生します。むしろ再び崩壊ウィンドウよりも、リストビューは、単純に隠されている:
は折りたたみサイズ変更
alt text http://www.deploylx.com/so/wpfexpander/Collapsed.png
後、マイ直感は、ウィンドウのサイズが変更する場合、ウィンドウのHeight
が設定されていることを私に告げると、したがってSizeToContent
プロパティをオーバーライドします。では、サイズを変更した後、サイズをコンテンツの動作に保つためにウィンドウを取得するにはどうすればよいですか?
現在の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:私はパンダの倒壊イベントに耳を傾け、WindowsのSizeToContent
プロパティをリセットしようとしました。これはほとんど動作します。ウィンドウが再び折りたたまれますが、再度展開すると元の100ピクセルの高さに戻ります。この情報を保存してキャプチャすることは可能ですが、ハッキーの匂いとエラーの傾向があります。
は、うん... SizeToContentプロパティをリセットすると、同じ基本的な効果がありますが、その後、あなたは展開失います –
Tomが何を意味するのか説明できますか?HeightまたはWidthをDouble.NaNに設定する方法 – DeveloperDan
特定のイベントに反応して、Control.Height = Double.Nanを設定できます。 – Thomas