MahApps PasswordBox 不显示清除按钮

MahApps PasswordBox not showing the clear button

我正在使用最新的 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,但结果相同。

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

VS underlining/not 定位资源的东西,我 运行 一直都在研究它,我有点相信这是 VS 的一个缺陷,尽管我不介意知道如何也清除它。这很烦人,因为有时它会在 IDE 中出现这些错误,有时不会,这很有趣。

与此同时,既然您的模板引用了正确的模板作为其基础,并且正确引用了资源字典,那么一切都将再次恢复正常。希望这对您有所帮助,干杯!