Подтвердить что ты не робот

Текстовое поле с закругленным углом WPF

Я не знаю WPF и теперь изучаю его. Я искал закругленные углы TextBox в WPF. Поэтому я искал Google и нашел фрагмент XAML:

 <!–Rounded Corner TextBoxes–>
<ControlTemplate x:Key="RoundTxtBoxBaseControlTemplate" TargetType="{x:Type Control}">
<Border Background="{TemplateBinding Background}" x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="6″>
<ScrollViewer x:Name="PART_ContentHost"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" TargetName="Bd"/>
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
</Trigger>
<Trigger Property="Width" Value="Auto">
<Setter Property="MinWidth" Value="100″/>
</Trigger>
<Trigger Property="Height" Value="Auto">
<Setter Property="MinHeight" Value="20″/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>

Итак, скажите мне, где вставить этот XAML. Пожалуйста, помогите мне подробно. Я новичок в WPF.

4b9b3361

Ответ 1

В WPF вы можете изменять или воссоздавать внешний вид элементов управления. Поэтому, если ваш пример, что они сделали, они изменили внешний вид TextBox, изменив ControlTemplate существующего TextBox. Поэтому, чтобы увидеть и изучить фрагмент кода, просто используйте приведенный ниже код

<Window x:Class="WpfApplication4.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Window.Resources>
    <ControlTemplate x:Key="TextBoxBaseControlTemplate" TargetType="{x:Type TextBoxBase}">
        <Border Background="{TemplateBinding Background}" 
                x:Name="Bd" BorderBrush="Black"
                BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="10"> 
            <ScrollViewer x:Name="PART_ContentHost"/>
        </Border>
        <ControlTemplate.Triggers>
            <Trigger Property="IsEnabled" Value="False">
                <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" TargetName="Bd"/>
                <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
            </Trigger>
            <Trigger Property="Width" Value="Auto">
                <Setter Property="MinWidth" Value="100"/>
            </Trigger>
            <Trigger Property="Height" Value="Auto">
                <Setter Property="MinHeight" Value="20"/>
            </Trigger>
        </ControlTemplate.Triggers>
    </ControlTemplate>
</Window.Resources>
<Grid>
    <TextBox Template="{StaticResource TextBoxBaseControlTemplate}" Height="25" Margin="5"></TextBox>
</Grid>

Итак, мы объявили статический ресурс в разделе "Ресурсы" окна, и мы использовали ресурс TextBoxBaseControlTemplate в свойстве Template TextBox как Template="{StaticResource TextBoxBaseControlTemplate}".

Шаблоны для настройки элементов управления WPF просто ссылаются на этот документ, чтобы получить представление

http://msdn.microsoft.com/en-us/magazine/cc163497.aspx

Ответ 2

@Smolla получил гораздо лучший ответ в своем комментарии к @Daniel Casserly:

<TextBox Text="TextBox with CornerRadius">
  <TextBox.Resources>
    <Style TargetType="{x:Type Border}">
      <Setter Property="CornerRadius" Value="3"/>
    </Style>
  </TextBox.Resources>
</TextBox>

Если вы хотите, чтобы все рамки TextBoxes и ListBoxes имели закругленные углы, поместите стиль в свое окно или приложение <Resources>.

Ответ 4

Просто установите BorderThicknessof textbox на ноль, добавьте рамку вокруг текстового поля.

 <Border BorderThickness="1" BorderBrush="Black" CornerRadius="10" Padding="2"
        HorizontalAlignment="Center" VerticalAlignment="Center">
        <TextBox Text="Hello ! " BorderThickness="0"/>
 </Border>

Выход такой, как показано на изображении! Вывод!