我正在使用MahApps并致力于实现TextBoxes的验证。 MahApps在TextBoxes中提供了一些不错的属性,Controls:TextBoxHelper.Watermark
和Controls:TextBoxHelper.ClearTextButton
。我正在使用我的样式编写ErrorTemplate但是我覆盖了TextBox的默认模板并丢失了这些Metro属性。如何在不丢失模板的情况下实现目标:
<Style TargetType="TextBox">
<Setter Property="Validation.ErrorTemplate" Value="{DynamicResource ErrorToolTipTemplate}" />
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}" />
</Trigger>
</Style.Triggers>
</Style>
答案 0 :(得分:3)
您应该定义新样式based on existing以保留其所有内容。我想在MahApps的情况下它将是MetroTextBox
:
<Style TargetType="TextBox" BasedOn="{StaticResource MetroTextBox}">
<!-- your properties go here -->
</Style>
答案 1 :(得分:1)
BasedOn是成功的关键。但是,您可能不会只在一个地方使用 MahApps 控件。因此,请尝试使您的样式更通用,并避免直接引用 BasedOn 中的 MetroTextBox 资源。
更好看的XAML风格会是这样的:
<Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource {x:Type TextBox}}">
<!-- your properties go here -->
</Style>