1 つの列幅が として定義されているグリッドがあり*
ます。他の列は として定義されAuto
ます。-definitionを持つ列には、*
Panel から派生した usercontrol が含まれており、これも を実装していIScrollInfo
ます。この間、コントロールの可視性は別の列でMeasureOverride
可視に設定されます (それ以外の場合、の可視性は折りたたみに設定されます)。RepeatButton
RepeatButton
これにより、列が拡張されることはありません。これは、ウィンドウのサイズを変更したときにのみ発生します。簡単な例:
<DockPanel LastChildFill="True">
<Grid DockPanel.Dock="Left">
<Grid.ColumnDefinitions>
<ColumnDefinition x:Name="TabItemColumn"/>
<ColumnDefinition x:Name="ScrollRightColumn" Width="Auto"/>
</Grid.ColumnDefinitions>
<ScrollViewer x:Name="PART_ScrollViewer"
Grid.Column="0"
Margin="-1,0,0,0"
Height="32"
CanContentScroll="True"
VerticalScrollBarVisibility="Hidden"
HorizontalScrollBarVisibility="Hidden"
HorizontalAlignment="Left">
<local:TabPanel
x:Name="tabPanel"
HorizontalAlignment="Left"
IsItemsHost="True" />
</ScrollViewer>
<RepeatButton Style="{StaticResource RepeatButtonScrollRight}"
Visibility="{Binding ElementName=tabPanel, Path=CanScrollRight, Converter={StaticResource _localBooleanConverter}}"
Grid.Column="1">
</RepeatButton>
の可視性はRepeatButton
正しくトリガーされ、実際にレンダリングされていることがわかりますがActualWidth
、含まれている列の はサイズ変更されるまでゼロです。
何か案は?