MahApps的PasswordBox没有显示清除按钮

4
我正在使用最新的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" />

如果我删除样式属性,按钮会显示为预期的样子,但我也想能够应用自己的样式。在XAML设计器中实际上是可见的,这很有趣。我也尝试了DynamicResource,但结果相同。


我没有时间确认,只是作为评论,但是你的BasedOn值指向了一个TargetType,而不是一个Key,我认为你实际上要找的是BasedOn = "{StaticResource MetroPasswordBox}",至少从查看包含PART_ClearText按钮的默认模板来看。 - Chris W.
你的样式是否存在于自己的资源字典中?如果是这样,你是否已经将MahApps资源字典声明为MergedDictionary,以便它知道如何到达你所基于的样式作为参考的路径? - Chris W.
MahApps文件的路径在App.xaml中,而我的自定义样式则在单独的资源字典中。我会尝试合并它并回报结果。目前看起来是这个样子的 - https://app.box.com/s/5iub1259ndnrrz7v3215t617ny1uvbre 我已经包含了App.xaml和MainSkin.xaml文件。一切都在那里。 - Venom
无法让它正常工作,哦,算了。 - Venom
算了,它实际上是可以工作的,但是VS找不到它(它会被下划线标记,不重要)。等你回来时,请写一个答案。谢谢。 - Venom
显示剩余2条评论
1个回答

1
继续原始评论,您将Type设置为资源而不是指向关键名称。因此,一旦您为新的自定义模板提供了正确的路径,以找到原始样式模板作为BasedOn条件来继承其余的MahApps样式,问题就得到解决。
VS未下划线/未定位资源的事情,我经常遇到这种情况,我相信这是VS中的一个缺陷,但我也不介意知道如何清除它。有时在IDE中会出现这些错误,有时则不会,非常有趣。
同时,现在您的模板已引用正确的模板作为其基础,并正确引用了资源字典,因此世界上一切都很好。希望这可以帮到您,干杯!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接