如何将Style控件的样式应用于Silverlight中的内容模板中的Child控件

时间:2012-05-18 05:49:52

标签: silverlight

此处我的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>

1 个答案:

答案 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>