【发布时间】:2011-01-09 01:05:19
【问题描述】:
我有一个网格,其中一个列宽定义为*。
其他列定义为Auto。
具有* 定义的列包含一个派生自Panel 的用户控件,该控件也实现了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 在调整大小之前为零。
有什么想法吗?
【问题讨论】:
标签: wpf grid wpf-controls column-width actualwidth