我在wpf项目中使用Mahapp Metro按钮。某些标准按钮具有在原始mahapp模板的contentpresenter中定义的转换器。
f.e。 squarebutton:
<ContentPresenter x:Name="contentPresenter"
ContentTemplate="{TemplateBinding ContentTemplate}"
Content="{TemplateBinding Content, Converter={StaticResource ToLowerConverter}}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
Margin="{TemplateBinding Padding}"
RecognizesAccessKey="True"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
OpacityMask="{x:Null}" />
是否有一种简单的方法可以将方形按钮更改为不使用ToLowerConverter而不更改整个模板?
我尝试以样式更改ContentTemplate,但没有成功:
<Style x:Key="MyFlyoverButtonStyle" TargetType="{x:Type Button}" BasedOn="{StaticResource SquareButtonStyle}">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<TextBlock Text="{TemplateBinding Content}" VerticalAlignment="{TemplateBinding VerticalAlignment}" HorizontalAlignment="{TemplateBinding HorizontalAlignment}" />
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
答案 0 :(得分:0)
更改ContentTemplate
对您没有帮助,因为您只需要替换它。您可以使用类似以下内容来访问ContentPresenter
,但这仅适用于来自UI集合的每个UI元素,例如。您可以使用此功能访问已应用该模板的ContentPresenter
模板中定义的单个ListBoxItem
:
ContentPresenter contentPresenter = FindVisualChild(dependencyObject);
因为这对你没用,我不打算显示该方法的代码。您唯一的另一种选择是定义新的ControlTemplate
。如果您有权访问默认的ControlTemplate
,则定义新的ControlTemplate
应该是一件简单的事情。