MahApps PasswordBox没有显示清除按钮

时间:2015-09-03 19:39:31

标签: c# wpf xaml mahapps.metro

我使用最新的MahApps WPF工具包,我在将自己的样式应用到其控件上时遇到了一些麻烦,正好是PasswordBox。 我已经在单独的.xaml文件中定义了样式,该文件包含在App.xaml文件中,以便在所有.xaml文件中全局可见。 但是当我使用键下指定的样式时,MahApps ClearTextButton拒绝出现在控件上。

这是我的风格:

<Style x:Key="DefaultPasswordBoxStyle"
       TargetType="{x:Type PasswordBox}"
       BasedOn="{StaticResource ResourceKey={x:Type PasswordBox}}">
    <Setter Property="HorizontalContentAlignment">
        <Setter.Value>Center</Setter.Value>
    </Setter>
    <Setter Property="FontSize">
        <Setter.Value>16</Setter.Value>
    </Setter>
</Style>

它在单独的.xaml文件中的用法:

<PasswordBox Margin="{StaticResource ControlMargin}"
             controls:TextBoxHelper.ClearTextButton="True" 
             Style="{StaticResource DefaultPasswordBoxStyle}"
             Width="200" />

如果我删除了Style属性,按钮会显示所需的但希望能够应用我自己的样式。它实际上在XAML设计器中可见,这很有趣。我也尝试过DynamicResource,但结果相同。

1 个答案:

答案 0 :(得分:1)

因此,为了继续原始评论,您将Type设置为您的资源,而不是指向密钥名称。因此,一旦您为新的自定义模板提供了一个正确的路径,可以将原始样式模板作为BasedOn条件来继承其余的MahApps样式,那么问题就解决了。

VS强调/没有找到资源的东西,我一直遇到这种情况,我有点确信这是VS的缺陷,虽然我不介意知道如何清除它。这很烦人,因为有时它会在IDE中出现这些错误,有时它不会很有趣。

与此同时,既然您的模板引用了正确的模板作为其基础,并且资源字典被正确引用,那么所有模板都在世界上再次出现。希望这有所帮助,欢呼!