none
Criar um botão dentro de um TextBox - WPF/Mahapps RRS feed

  • Pergunta

  • Olá Pessoal!

    Preciso criar um estilo que cria um botão dentro de um Textbox. Estou usando o WPF e um framework chamado MahApps. O resultado deverá ser assim:

    Mas o problema é que está ficando dessa maneira:

    <Style TargetType="{x:Type TextBox}"
                   x:Key="OpenFileMetroTextBox"
                   BasedOn="{StaticResource ButtonCommandMetroTextBox}">
                    <Setter Property="Controls:TextBoxHelper.ButtonTemplate">
                        <Setter.Value>
                            <ControlTemplate TargetType="{x:Type Button}">
                                <Button>
                                    <Rectangle Width="10" Height="10">
                                        <Rectangle.Resources>
                                            <SolidColorBrush x:Key="BlackBrush" Color="White" />
                                        </Rectangle.Resources>
                                        <Rectangle.Fill>
                                            <VisualBrush Stretch="Fill" Visual="{StaticResource appbar_add}" />
                                        </Rectangle.Fill>
                                    </Rectangle>
                                </Button>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>

    Alguém saberia como me ajudar?

    Grande abraço :)

    segunda-feira, 6 de novembro de 2017 07:51

Respostas

  • Ola....

       Eu achei a seguinte solução em https://stackoverflow.com/questions/1404057/how-to-make-a-textbox-with-a-button-inside-in-wpf:

    <TextBox.Template>
        <ControlTemplate TargetType="{x:Type TextBoxBase}">
            <mwt:ListBoxChrome 
                Background="{TemplateBinding Panel.Background}"
                BorderBrush="{TemplateBinding Border.BorderBrush}"
                BorderThickness="{TemplateBinding Border.BorderThickness}"
                RenderMouseOver="{TemplateBinding UIElement.IsMouseOver}"
                RenderFocused="{TemplateBinding UIElement.IsKeyboardFocusWithin}"
                Name="Bd"
                SnapsToDevicePixels="True">
    
                <DockPanel>
                    <Button DockPanel.Dock="Right" Name="myButton" Padding="3,0" Click="myButton_Click">...</Button>
                    <ScrollViewer Name="PART_ContentHost" SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}"></ScrollViewer>
                </DockPanel>
            </mwt:ListBoxChrome>
            <ControlTemplate.Triggers>
                <Trigger Property="UIElement.IsEnabled">
                    <Setter Property="Panel.Background" TargetName="Bd">
                        <Setter.Value>
                            <DynamicResource ResourceKey="{x:Static SystemColors.ControlBrushKey}" />
                        </Setter.Value>
                    </Setter>
                    <Setter Property="TextElement.Foreground">
                        <Setter.Value>
                            <DynamicResource ResourceKey="{x:Static SystemColors.GrayTextBrushKey}" />
                        </Setter.Value>
                    </Setter>
                    <Trigger.Value>
                        <s:Boolean>False</s:Boolean>
                    </Trigger.Value>
                </Trigger>
            </ControlTemplate.Triggers>
        </ControlTemplate>
    </TextBox.Template>


    Microsoft Community Contributor

    • Marcado como Resposta JR-Master quarta-feira, 31 de janeiro de 2018 16:24
    quarta-feira, 31 de janeiro de 2018 16:11
    Moderador