此处我的TextBox文本正在与contentemplate中的子文本框绑定,但如何将默认样式和验证错误应用于内容模板中的子文本框。
<TextBox x:Name="tbIdNumber" Width="110" Height="20" Text="{Binding IdNumber, Mode=TwoWay, ValidatesOnExceptions=true, NotifyOnValidationError=true}" >
<TextBox.Template>
<ControlTemplate TargetType="TextBox" >
<StackPanel Orientation="Horizontal" >
<Image Height="10" Width="20" Source="Images/bullet_darkblue.PNG" />
<TextBox Width="90" Tag="{Binding RelativeSource={RelativeSource TemplatedParent}}" DataContext="{Binding RelativeSource={RelativeSource TemplatedParent},Path=DataContext, Mode=TwoWay}"
Text="{Binding Path=Text ,RelativeSource={RelativeSource TemplatedParent}, Mode=TwoWay, ValidatesOnExceptions=true, NotifyOnValidationError=true}" >
</TextBox>
</StackPanel>
</ControlTemplate>
</TextBox.Template>
</TextBox>
答案 0 :(得分:0)
使用TextBox为TextBox控件定义控件模板是非常罕见的。我建议你不要追求上面的道路。
您应该从TextBox here的默认ControlTemplate开始(警告:它非常复杂)。它包含验证,重点等所有必要的视觉状态。
根据我的观察,您希望在文本框旁边添加图像。您应该能够在网格内添加图像元素,然后调整边框上的边距。这是一个片段:
<Image Height="10" Width="20" Source="Images/bullet_darkblue.PNG" />
<Border Margin="20,10,0,0"
x:Name="MouseOverBorder" BorderThickness="1" BorderBrush="Transparent">
<ScrollViewer x:Name="ContentElement" Padding="{TemplateBinding Padding}"
BorderThickness="0" IsTabStop="False"/>
</Border>