【发布时间】:2016-01-19 14:45:43
【问题描述】:
我即将通过创建不同的模板来创建一个新的扩展器控件(学习目的),但无法弄清楚我做错了什么......
切换按钮模板:
<ToggleButton>
<ToggleButton.Template>
<ControlTemplate TargetType="ToggleButton">
<Border x:Name="eBB" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
<Grid>
<Path x:Name="Sign" Data="M 0,10 L 7.5,2.5 L 15, 10" Stroke="Black" Width="15">
<Path.RenderTransform>
<RotateTransform Angle="0"/>
</Path.RenderTransform>
</Path>
</Grid>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Data" TargetName="Sign" Value="M 0,2.5 L 7.5,10 L 15,2.5"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Stroke" Value="#222" TargetName="Sign"/>
<Setter Property="Background" Value="#666" TargetName="eBB"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Stroke" Value="#FF003366" TargetName="Sign"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</ToggleButton.Template>
</ToggleButton>
扩展模板:
<Expander>
<Expander.Template>
<ControlTemplate TargetType="Expander">
<Grid>
<Grid.RowDefinitions>
<RowDefinition x:Name="ContentRow" Height="*"/>
<RowDefinition Height="20"/>
</Grid.RowDefinitions>
<ContentPresenter Grid.Row="0" Visibility="Collapsed" Content="{TemplateBinding Content}"/>
<local:FullSizeExpanderToggleButton Grid.Row="1" />
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsExpanded" Value="True">
<Setter Property="Visibility" Value="Visible"/>
<Setter Property="Height" Value="*" TargetName="ContentRow"/>
</Trigger>
<Trigger Property="IsExpanded" Value="False">
<Setter Property="Height" Value="0" TargetName="ContentRow"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Expander.Template>
</Expander>
现在当我想在主视图中添加扩展器时:
<custom:FullSizeExpander Width="300">
<Button/>
</custom:FullSizeExpander>
Control 内部的整个空间都被 Button 填充(ToggleButton 不再可见)。
我做错了什么?
另外我有一些关于这个问题的问题:
- “ContentSource="Content"” 有什么作用?它是干什么用的?与“Content="{Templatebinding Content}"”有什么不同?
- 当 ToggleButtons 属性“IsPressed”发生变化时,Expander 的“IsExpanded”属性是否也会发生变化?如果扩展器中根本没有切换按钮怎么办?
【问题讨论】:
-
您应该考虑将文本缩减为一个问题。我不想回答底部的“其他问题”,但我可能会研究主要问题。
标签: c# wpf xaml togglebutton expander