我使用最新的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,但结果相同。
答案 0 :(得分:1)
因此,为了继续原始评论,您将Type
设置为您的资源,而不是指向密钥名称。因此,一旦您为新的自定义模板提供了一个正确的路径,可以将原始样式模板作为BasedOn
条件来继承其余的MahApps样式,那么问题就解决了。
VS强调/没有找到资源的东西,我一直遇到这种情况,我有点确信这是VS的缺陷,虽然我不介意知道如何清除它。这很烦人,因为有时它会在IDE中出现这些错误,有时它不会很有趣。
与此同时,既然您的模板引用了正确的模板作为其基础,并且资源字典被正确引用,那么所有模板都在世界上再次出现。希望这有所帮助,欢呼!