Google 크롬 Adressbar처럼 버튼이있는 WPF (XAML 사용)의 TextBox를 어떻게 만들 수 있습니까?버튼이있는 Texbox
그리고 어떻게 내가 오른쪽에있는 버튼의 위치를 변경하고 왼쪽 있습니다 : 나는 아래 그림과 같은 일도 원하는 ?
예를 : 당신이 한 번만 사용해야처럼 소리부터, 당신은 둥지 텍스트 상자의 상단에 그리드 내부의 버튼을 수
Google 크롬 Adressbar처럼 버튼이있는 WPF (XAML 사용)의 TextBox를 어떻게 만들 수 있습니까?버튼이있는 Texbox
그리고 어떻게 내가 오른쪽에있는 버튼의 위치를 변경하고 왼쪽 있습니다 : 나는 아래 그림과 같은 일도 원하는 ?
예를 : 당신이 한 번만 사용해야처럼 소리부터, 당신은 둥지 텍스트 상자의 상단에 그리드 내부의 버튼을 수
을 수행하는 방법을 제공합니다 이 :
<Style x:Key="SearchButtonStyle" TargetType="{x:Type Button}">
<Setter Property="FocusVisualStyle" Value="{StaticResource ButtonFocusVisual}"/>
<Setter Property="Background" Value="{StaticResource ButtonNormalBackground}"/>
<Setter Property="BorderBrush" Value="{StaticResource ButtonNormalBorder}"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="Padding" Value="1"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border BorderThickness="0" Margin="1.875,0.5,1.75,-0.375" Background="{TemplateBinding Background}" Width="16" Height="16"/>
<ControlTemplate.Triggers>
<Trigger Property="IsKeyboardFocused" Value="true"/>
<Trigger Property="ToggleButton.IsChecked" Value="true"/>
<Trigger Property="IsEnabled" Value="false">
<Setter Property="Foreground" Value="#ADADAD"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
그리고 WPF 록스! :
<Border x:Name="TextboxBorder" BorderBrush="#FFB8AAAA" BorderThickness="1" Grid.Column="2" Margin="3,1.5,4.084,1.5" Height="27" Background="White" CornerRadius="3">
<Grid x:Name="TextboxGrid">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition Width="33"/>
</Grid.ColumnDefinitions>
<Button x:Name="btn" Grid.Column="1" Margin="3.5,4.833,4.5,3.5" BorderBrush="{x:Null}" Style=" {DynamicResource SearchButtonStyle}" >
<Button.Background>
<ImageBrush ImageSource="Images/search.png"/>
</Button.Background>
</Button>
<TextBox Padding="0,1.2,0,0" x:Name="txt" Margin="1.541,0.5,2.041,0.5" TextWrapping="Wrap" Text="سلام" BorderThickness="0" FontSize="16"/>
</Grid>
</Border>
그리고 버튼 스타일이다 !
(전 C#을 사용하고 있습니다)
<Grid>
<TextBox Text="Hello" />
<Button HorizontalAlignment="Right" Content="Click Me" />
</Grid>
유일한 문제는 텍스트가 버튼 아래에 표시된다는 것입니다. 다른 방법으로는 사용자 정의 컨트롤을 만들거나 텍스트 상자의 controltemplate을 편집하는 것입니다 (하지만 원하는 기능이 없을 수도 있습니다).
2 열 그리드의 왼쪽 열에 텍스트 상자를 만든 다음 오른쪽 열의 단추를 만듭니다. 그런 다음 배경 및 테두리를 텍스트 상자에서 제거하고이 배경/테두리를 눈금에 배치하십시오. 버튼 아래에 텍스트를 놓을 수없는 텍스트 상자 모양이 나타납니다.
예 : 당신이 그와 함께이
<Border BorderBrush="LightGray" BorderThickness="1" Height="30">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="auto"></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBox VerticalAlignment="Center" BorderBrush="Transparent" Background="Transparent" Text="Hello World this is a really long bit of text that wont go underneath the button (it will get clipped)"></TextBox>
<Button Content="Click me" Grid.Column="1" Margin="4"></Button>
</Grid>
</Border>
유일한 문제는 당신의 최선의 선택 당신이 컨트롤 템플릿과 크롬 호버 효과 등 등의 UserControl을하지 않는다는 것입니다, 그러나 이것은 당신이 몇 가지 아이디어
텍스트 상자에 포커스가있을 때 트릭이 나타납니다 ... 새 사용자 컨트롤을 만들면 어떻게 할 수 있습니까? (Usercontrols에 대한 경험이 없습니다) – mahdavipanah
그런 목적으로 자신 만의'UserControl'을 만듭니다. –