하나의 열 너비가 *
인 격자가 있습니다. 다른 열은 Auto
으로 정의됩니다. *
정의가있는 열은 IScrollInfo
을 구현하는 Panel에서 파생 된 사용자 정의 컨트롤을 포함합니다. 이 컨트롤의 MeasureOverride
표시 여부는 다른 열의 RepeatButton
에서 표시로 설정됩니다. RepeatButton
의 표시 여부는 축소로 설정됩니다.ColumnDefinition은 크기 조정까지 확장되지 않습니다.
이 경우 열이 확장되지 않습니다. 내 창 크기를 조정할 때만 발생합니다. 단순화 된 예 :
<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
이 크기 조정 때까지 제로입니다.
아이디어가 있으십니까?
나는 그다지 의심 스럽지만, 나는 많은 행운이없이 가능한 모든 요소를 무효화하려고 노력했다고 느낍니다. 명확히하기 : 폭을 설정하지 않았습니다. 열 너비는 Auto로 설정되며 repeatbuttons 가시성이 visible로 설정된 경우 크기로 확장되어야합니다. 부모 요소가 모눈이라고 가정합니다. 그리드에서 InvalidateArrange()를 호출하면 CanScrollRight 속성 설정 기에서 아무 효과가 없습니다. – risingape
정확히 어디에서 문제가 귀하의 예제 코드에 놓이는 지 말하기는 어렵지만 작동해야하는 것처럼 보입니다. 이 효과를 얻을 수있는 곳 중 하나가 귀하의 RepeatButton에 콘텐츠가 없다는 것을 볼 수 있습니다. 일반적으로 텍스트는 여기에 있어야합니다. 그렇지 않으면 버튼이 0 너비에 "자동"됩니다. 행운을 빕니다. –
@risingape : 트라이 Q는 일반적으로 기본 버튼 너비가 맞지만 적용 할 수없는 경우가 있습니다. RepeatButtonScrollRight ControlTemplate이 항상 0이 아닌 너비가있는 한 Content가 있는지 여부는 중요하지 않습니다. . –