【发布时间】:2019-01-16 22:00:21
【问题描述】:
Expander 应该是左侧的 HeaderText 和右侧的 ToggleButton。
我尝试将ToggleButton 设置为默认样式,而不为它创建一个完整的新ControlTemplate。
有人可以帮忙吗?
<ControlTemplate TargetType="Expander" x:Key="ExpanderControlx">
<Grid Margin="0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Name="ContentRow" Height="0"/>
</Grid.RowDefinitions>
<Border Grid.Row="0" >
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="20"/>
</Grid.ColumnDefinitions>
<ToggleButton Grid.Column="1"
IsChecked="{Binding Path=IsExpanded,Mode=TwoWay,RelativeSource={RelativeSource TemplatedParent}}"
OverridesDefaultStyle="True"
Template="{StaticResource {x:Type ToggleButton}}"
/>
<TextBlock Grid.Column="0" Eddie.TextFormat="Header1" Text="{TemplateBinding Header}" HorizontalAlignment="Left" />
</Grid>
</Border>
<Border Grid.Row="1" Name="ContentText" >
<StackPanel>
<ContentPresenter/>
</StackPanel>
</Border>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsExpanded" Value="True">
<Setter TargetName="ContentRow" Property="Height" Value="{Binding ElementName=ContentText, Path=Height}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
<Style TargetType="controls:ExpanderControl">
<Setter Property="Template" Value="{StaticResource ExpanderControlx}" />
</Style>
【问题讨论】:
-
我尝试将 ToggleButton 的 Template 设置为 ToggleButton 的静态资源,但出现错误。
-
ToggleButton 当前的外观如何?您希望它看起来如何?
-
所以您希望整行成为一个切换按钮,但切换的视觉效果就在右侧?不清楚你在问什么,不过听起来像是一个快速模板。
-
切换按钮应该看起来像普通扩展器的默认按钮。只有右上角的字段应该有正常的扩展按钮。如果我在代码中删除分配给切换按钮的覆盖模板的行,它会显示一个没有箭头的矩形按钮。
标签: wpf xaml templates togglebutton expander