wpf从按钮样式中删除转换器

时间:2013-11-04 13:22:06

标签: wpf button binding styles valueconverter

我在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>

1 个答案:

答案 0 :(得分:0)

更改ContentTemplate对您没有帮助,因为您只需要替换它。您可以使用类似以下内容来访问ContentPresenter,但这仅适用于来自UI集合的每个UI元素,例如。您可以使用此功能访问已应用该模板的ContentPresenter模板中定义的单个ListBoxItem

ContentPresenter contentPresenter = FindVisualChild(dependencyObject);

因为这对你没用,我不打算显示该方法的代码。您唯一的另一种选择是定义新的ControlTemplate。如果您有权访问默认的ControlTemplate ,则定义新的ControlTemplate 应该是一件简单的事情。