您可以在ExpanderStyle中的Setter中指定ToggleButtonStyle吗? 像这样可以在日历中使用:
<Style x:Key="CS" TargetType="{x:Type Calendar}" >
<Setter Property="CalendarDayButtonStyle" Value="{StaticResource CalendarDayButtonStyle}"/>
<Setter Property="CalendarButtonStyle" Value="{StaticResource CalendarButtonStyle}"/>
<Setter Property="CalendarItemStyle" Value="{StaticResource CalendarItemStyle}"/>
</Style>
问题的背景:在BasedOn-Styles中,我只更改了setter而不是整个模板以进行小的更改。
非常感谢。
答案 0 :(得分:0)
不,这是不可能的。 Expander控件不公开该属性。但是,您可以设置扩展器模板并以任何方式显示该按钮。
Here is the complete XAML code for the default template
您应该将该模板复制到项目中并修改ToggleButton以使用您想要的任何样式:
<ToggleButton OverridesDefaultStyle="True"
Template="{StaticResource ExpanderToggleButton}"
IsChecked="{Binding IsExpanded, Mode=TwoWay,
RelativeSource={RelativeSource TemplatedParent}}"
Style="{StaticResource YourStyleHere}">
答案 1 :(得分:0)
这不可能是开箱即用的。可能因为没有一个ToggleButton
样式,有四个,每个ExpandDirection
对你来说可能有些过分,但如果你真的需要这个功能可以重复使用,你可以创建自己的自定义控件,在其中添加四个依赖属性,ToggleButtonDownStyle
,ToggleButtonUpStyle
,ToggleButtonLeftStyle
和{ {1}}并将ToggleButtonRightStyle
的默认样式复制到自定义控件的默认样式中,但将Expander
样式的StaticResource更改为ToggleButton
所以这并不容易,但这会让你做你想做的事情(而且我猜你最感兴趣的是默认的TemplateBinding
方向)
Down
以下是控件的外观,我将其命名为<Style TargetType="{x:Type controls:StyleableExpander}">
<Setter Property="ToggleButtonDownStyle" Value="{StaticResource toggleButtonDownStyle}"/>
<Setter Property="ToggleButtonUpStyle" Value="{StaticResource toggleButtonUpStyle}"/>
<Setter Property="ToggleButtonLeftStyle" Value="{StaticResource toggleButtonLeftStyle}"/>
<Setter Property="ToggleButtonRightStyle" Value="{StaticResource toggleButtonRightStyle}"/>
</Style>
并将其放入“WPF自定义控件库”中以实现可重用性。仅为演示目的添加StyleableExpander
ToggleButtonDownStyle
这是(非常详细的)[StyleTypedProperty(Property="ToggleButtonDownStyle",
StyleTargetType=typeof(ToggleButton))]
public class StyleableExpander : Expander
{
public static DependencyProperty ToggleButtonDownStyleProperty =
DependencyProperty.Register("ToggleButtonDownStyle",
typeof(Style),
typeof(StyleableExpander),
new FrameworkPropertyMetadata(DefaultToggleButtonDownStyle));
public Style ToggleButtonDownStyle
{
get { return (Style)GetValue(ToggleButtonDownStyleProperty); }
set { SetValue(ToggleButtonDownStyleProperty, value); }
}
static StyleableExpander()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(StyleableExpander),
new FrameworkPropertyMetadata(typeof(StyleableExpander)));
}
private static ResourceDictionary _resources;
private static Style DefaultToggleButtonDownStyle
{
get
{
if (_resources == null)
{
Uri resourceLocater = new Uri("/StyleableExpanderLibrary;component/Themes/Generic.xaml", System.UriKind.Relative);
_resources = (ResourceDictionary)Application.LoadComponent(resourceLocater);
}
return _resources["ExpanderDownHeaderStyle"] as Style;
}
}
}
的默认样式。 Generic.xaml
的StaticResource已更改为ToggleButton
。要获得所有四个方向,您需要更改{TemplateBinding ExpanderDownHeaderStyle}
的触发器
ExpandDirection