我想在内置的左侧添加一个感叹号图像,TextBox
并使其在任何时候可见TextBox
Validation.HasError
,否则将其隐藏。
如何ControlTemplate
在不重新绑定所有TextBox
属性的情况下使用添加图像?
<StackPanel>
<StackPanel.Resources>
<ControlTemplate x:Key="TextBoxWithIndicator" TargetType="{x:Type TextBox}">
<StackPanel Orientation="Horizontal">
<!-- Re-bind {Binding Path=Property}, including some that I may miss -->
<TextBox Text="{TemplateBinding Text}" Width="{TemplateBinding Width}" Height="{TemplateBinding Height}"/>
<Image Source="resources/exclaim.png" Visibility="{TemplateBinding Validation.HasError}"/>
</StackPanel>
</ControlTemplate>
</StackPanel.Resources>
<TextBox Template="{StaticResource TextBoxWithIndicator}" Width="120">Happy Go Lucky</TextBox>
</StackPanel>
注意前面的代码块代表了我迄今为止在 WPF 中的徒劳努力。它在几个方面也可能是错误的,例如可能需要一个ValueConverter
for Visibility <--> Validation.HasError
; 尽管有 TemplateBinding 等,但 TextBox 上的设置Width="120"
似乎调整了 StackPanel 宽度而不是 TextBox 宽度。