0

ここで、My 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>
4

1 に答える 1

0

TextBox コントロールのコントロール テンプレートを TextBox で定義することは非常にまれです。上記の道をたどらないことをお勧めします。

代わりに、ここで TextBox のデフォルトの ControlTemplate から開始する必要があります(警告: 非常に複雑です)。検証、フォーカスなどに必要なすべての視覚的状態が含まれています。

私が観察したところ、テキストボックスの横に画像を追加したいと考えています。Grid 内に画像要素を追加してから、Border の余白を調整できるはずです。ここにスニペットがあります:

<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>
于 2012-05-19T08:17:47.137 に答える