我正在使用最新的 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 下划线/不定位资源的事情,我一直遇到这个问题,我有点确信这是 VS 中的一个缺陷,尽管我也不介意知道如何清除它。这很烦人,因为有时它会在 IDE 中出现这些错误,有时不会,很有趣。

与此同时,既然您的模板引用了正确的模板作为其基础,并正确引用了资源词典,那么一切又都很好了。希望这有帮助,干杯!

关于c# - MahApps PasswordBox 未显示清除按钮,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32384113/

10-11 15:58