次の XAML コードがあります。
<Grid Grid.Row="2" Name="grid_StatusBar">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="{Binding ElementName=wrapPanel, Path=ActualWidth}" />
<ColumnDefinition Width="30" />
</Grid.ColumnDefinitions>
<ProgressBar Grid.Column="0" HorizontalAlignment="Stretch" Margin="5,5,5,5" Name="progressBar1" VerticalAlignment="Stretch" />
<WrapPanel Grid.Column="1" Name="wrapPanel" HorizontalAlignment="Right">
<Label Content="1" Height="28" HorizontalAlignment="Right" Margin="0,0,0,0" Name="label_Dataset" VerticalAlignment="Stretch" Visibility="Collapsed" />
<Label Content="/20" Height="28" HorizontalAlignment="Right" Margin="0,0,0,0" Name="label_TotalDatasets" VerticalAlignment="Stretch" Visibility="Collapsed" />
<Label Content="ID:" Height="28" HorizontalAlignment="Right" Margin="0,0,0,0" Name="label_IDText" VerticalAlignment="Stretch" />
<Label Content="no id" Height="28" HorizontalAlignment="Right" Margin="0,0,0,0" Name="labelID" VerticalAlignment="Stretch" />
</WrapPanel>
<Button Grid.Column="2" Name="button_Help" Height="30" Width="30" Content="?" HorizontalAlignment="Right" VerticalAlignment="Stretch" Click="button_Help_Click" >
</Grid>
一部のラベルの可視性を変更し、さまざまなテキストを設定しながら(したがって、さまざまな長さ/幅.
その後、さまざまな機能があります。
- プログラムの開始時に、ラベルの「ID なし」テキストは
labelID
内部値に置き換えられます。幅が更新されます: OK - コードを実行すると、最初の 2 つのラベルの可視性が変更されます
ColumnDefinition.Width
が、更新されず、最初の 2 つのラベルのみが表示されます (4 つすべてが wrapPanel ActualWidth に収まる十分な場所がないためです:エラー! Visibility
プロパティを最初の 2 つのラベルからCollapsed
に変更すると、最初Visible
からすべてのラベルの可視性がVisible
になり、すべてのラベルが表示されます: OK- 前の状態から、最初の 2 つのラベルの可視性を に変更する
Collapsed
と、ColumnDefinition.Width
が更新され、ProgressBar
が可能な限り広くなり、すべてのテキストが表示されます。
誰でも私を助けてもらえますか?幅が更新されない理由がわかりません...
注:可視性は、次のコードを実行しているウィンドウで 2 つのボタンを使用して変更されます。
label_Dataset.Visibility = System.Windows.Visibility.Visible;
label_TotalDatasets.Visibility = System.Windows.Visibility.Visible;
編集:私の目標は、可能な最大幅を使用して ProgressBar を表示するために、最小スペース (1 行) を使用して可視ラベルを表示することです。