저는 가짜 인 TabControl
을 IE8- 탭처럼 보이기 위해 구현하고 있습니다. (저는 tabcontrol의 다른 구현을 알고 있습니다).템플릿의 트리거가 잘못된 렌더링을 야기합니다.
내 TabControl
은 Selector
이고, TabItem
은 ContentControl
입니다. 탭을 선택하면 IsSelected
(종속 스키마)을 true로 설정합니다. 내 Trigger
은 다음과 같습니다 : 내 TabItem
에 대한
<Trigger Property="IsSelected" Value="true">
<Setter Property="Margin" Value="0,0,0,0"/>
</Trigger>
기본 마진은 0,2,0,0입니다. 즉, 선택되지 않은 TabItem
은 선택 항목에 약간의 오프셋이 있어야합니다. 이 작업을 역순으로 수행하고 대신 높이를 사용하려고했습니다. 결과적으로 선택된 TabItem
이 여백을 변경하는 대신 잘리는 것으로 보입니다. 속성이 직접 태그에 설정되어있는 경우 나는 많은 성공없이 내 IsSelected
종속성 속성에 Arrange
, Visual
및 Measure
을 무효화 시도했습니다
<local:TabItem IsSelected="true"/>
:, 즉를 올바른 시각을 얻을.
무엇이 여기에 있습니까?
편집 :
<Style TargetType="{x:Type local:TabItem}">
<Setter Property="Background" Value="{Binding Path=TabItemNormalBackground, RelativeSource={RelativeSource Self}}"/>
<Setter Property="SnapsToDevicePixels" Value="True"/>
<Setter Property="Height" Value="26"/>
<Setter Property="Margin" Value="0,2,0,0"/>
<Setter Property="HorizontalAlignment" Value="Stretch" />
<Setter Property="VerticalAlignment" Value="Bottom" />
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:TabItem}">
<Border CornerRadius="3,3,0,0"
Background="{TemplateBinding Background}"
BorderBrush="{StaticResource TabItemOuterBorderBrush}"
BorderThickness="1,1,1,0">
<Border CornerRadius="3,3,0,0"
Background="{TemplateBinding Background}"
BorderBrush="{StaticResource TabItemInnerBorderBrush}"
BorderThickness="1,1,1,0">
<Grid HorizontalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<ContentPresenter Grid.Column="0" Content="{TemplateBinding Icon}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<ContentPresenter Grid.Column="1"
SnapsToDevicePixels="True"
HorizontalAlignment="Stretch"
VerticalAlignment="Center"
RecognizesAccessKey="True"/>
<Button x:Name="PART_CloseButton"
Grid.Column="2"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Margin="5,0,5,0"
Style="{StaticResource CloseButtonStyle}"
Visibility="Collapsed"
/>
</Grid>
</Border>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="true">
<Setter Property="Background" Value="{Binding Path=TabItemSelectedBackground, RelativeSource={RelativeSource Self}}"/>
<Setter Property="Margin" Value="0,0,0,0"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
XAML의 전체 레이아웃 코드를 보지 않고도 대답하기가 어렵습니다. –
위의 TabItem을 추가했습니다. 나는 그것이 충분하기를 바란다. – risingape