Comment puis-je ajouter un Bouton “Effacer” pour une zone de texte dans WPF?

Je suis en train de travailler sur un contrôle pour mon application WPF dans lequel je veux un Button à l'intérieur d'un TextBox. Le Button contiendra une image qui change avec un mouseover, mais je sais déjà comment faire partie. Ce que je vais avoir des problèmes avec, est en fait, y compris les Button dans le TextBox de sorte qu'il ne prend beaucoup moins de place que l'image et est transparent. Ci-dessous les marques que j'ai essayé jusqu'à présent:

XAML:

<Grid>
  <TextBox x:Name="SearchBoxView" HorizontalAlignment="Right" Width="200" Margin="5, 5, 10, 5" FontSize="16" KeyUp="SearchBoxKeyDown" Text="{Binding SearchText, Mode=TwoWay}" Grid.Column="0"/>
  <Button Background="Transparent" HorizontalAlignment="Right" HorizontalContentAlignment="Center" VerticalContentAlignment="Center">
    <Button.Content>
      <Image Source="Image.png" Stretch="None" RenderOptions.BitmapScalingMode="NearestNeighbor" VerticalAlignment="Center" HorizontalAlignment="Center"/>
    </Button.Content>
  </Button>
</Grid>

J'ai suivi avec cette question: Comment mettre en place une zone de texte avec un bouton "effacer" dans wpf?, qui a également liés à cet article: WPF Zone de Texte de Recherche. Le code XAML suggérée dans la question n'a pas de travail, je pense que c'est à cause de la Style qu'ils utilisent, que je n'ai pas accès. L'article donne trop d'informations, surtout de parler de la déclencheurs et les propriétés de dépendance nécessaire afin de remplacer la recherche et la suppression des icônes sur mouseovers. Donc, je vous demande de l'aide pour trouver une solution simple sur la façon de rendre cela possible. Merci!!!!

EDIT: j'ai suivi les conseils des réponses, et je suis en mesure de style sur le bouton correctement, mais il n'apparaît pas dans la zone de texte encore, et si c'est le cas, le texte s'exécute toujours au-dessous. J'ai inclus le code XAML et une image de ce qui se passe:

XAML:

<Grid Margin="5, 5, 10, 5">
  <Grid.ColumnDefinitions>
    <ColumnDefinition Width="*"/>
    <ColumnDefinition Width="Auto"/>
  </Grid.ColumnDefinitions>
  <TextBox x:Name="SearchBoxView" HorizontalAlignment="Right" Width="200" FontSize="16" KeyUp="SearchBoxKeyDown" Text="{Binding SearchText, Mode=TwoWay}" Grid.Column="0"/>
  <Button Background="{Binding Backgound, ElementName=SearchBoxView}" HorizontalAlignment="Right" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Click="SearchBoxViewButtonClick" Grid.Column="1">
    <Button.Template>
      <ControlTemplate>
        <Border HorizontalAlignment="Center" VerticalAlignment="Center">
          <Image Source="Image.png" Width="12" Height="12"/>
        </Border>
      </ControlTemplate>
    </Button.Template>
  </Button>
</Grid>

Image:

Comment puis-je ajouter un Bouton “Effacer” pour une zone de texte dans WPF?

  • Avec le courant XAML le Bouton est dans une Grille et vous n'avez pas de Lignes de la Grille. Littéralement, vous devez le Bouton dans la zone de texte ou tout simplement dans le contrôle?
  • Si vous regardez mon commentaire sur ArsenMkrt réponse, vous verrez ce que j'ai besoin, ou au moins ce que j'en ai besoin.
  • OK, mais puis-je vous suggérer de changer la question à bouton dans un contrôle si vous n'en avez pas besoin DANS la zone de texte.
InformationsquelleAutor Sean Cogan | 2013-08-14