my 中的填充属性<TextBox>不应用输入到属性中的任何值



我已经为一个文本框做了下面的代码,其中包含一个图像在它里面,我想应用右填充值为20,使文本不重叠的图标,但它似乎不工作。我已经尝试过填充属性只存在于顶部<TextBox>下,或者当它只存在于我的<TextBox.Style>中,以及根据下面的代码,这些组合都不起作用。

<TextBox x:Name="txtUser"
FontSize="13"
FontWeight="Medium"
FontFamily="Segoe UI"
Foreground="White"
CaretBrush="LightGray"
Height="28"
VerticalContentAlignment="Center"
Margin="0,5,0,0"
Padding="20,0,0,0">
<TextBox.Background>
<ImageBrush ImageSource="/Images/user-icon.png"
Stretch="None"
AlignmentX="Left"/>
</TextBox.Background>
<TextBox.Style>
<Style TargetType="TextBox">
<Setter Property="BorderBrush" Value="#5b69bc"/>
<Setter Property="BorderThickness" Value="0,0,0,1"/>
<Setter Property="Padding" Value="20,0,0,0"/>
<Style.Triggers>
<Trigger Property="IsFocused" Value="True">
<Setter Property="BorderBrush" Value="#6e82ef"/>
<Setter Property="BorderThickness" Value="0,0,0,1"/>
<Setter Property="Padding" Value="20,0,0,0"/>
</Trigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>

我正在努力弄清楚为什么填充在这种情况下不适用。

如果你想让你的控件的Background有填充,你可以欺骗一点VisualBrush。有了它,你可以"画画"。使用其他UI元素

例如,您可以使用具有两列的Grid进行绘制。第一列,Width=20是你的"填充"。第二个是一个矩形,背景图片为:

<TextBox
Name="txtUser"
Height="28"
Margin="0,5,0,0"
Padding="20,0,0,0"
VerticalContentAlignment="Center"
CaretBrush="LightGray"
FontFamily="Segoe UI"
FontSize="13"
FontWeight="Medium"
Foreground="White">
<TextBox.Background>
<VisualBrush AlignmentX="Left" Stretch="None">
<VisualBrush.Visual>
<Grid
Width="{Binding ElementName=txtUser, Path=ActualWidth}"
Height="{Binding ElementName=txtUser, Path=ActualHeight}"
Background="Transparent">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="20" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Rectangle Grid.Column="1">
<Rectangle.Fill>
<ImageBrush
AlignmentX="Left"
ImageSource="/Images/user-icon.png"
Stretch="None" />
</Rectangle.Fill>
</Rectangle>
</Grid>
</VisualBrush.Visual>
</VisualBrush>
</TextBox.Background>

注意:

  • 因为VisualBrush中的Visual不知道它的容器,所以你已经设置了它的WidthHeight(这里,它们绑定到父TetxBoxActualHeightActualWidth)
  • 设置内部GridBackground(此处为Transparent)。如果你不这样做,画笔就不会"看到"。

编辑:

如果您正在讨论文本本身的Padding,那么您提供的示例代码将按预期工作,并且填充被正确应用。

在这种情况下,您应该直接设置Padding或在Style中设置,而不是同时设置。如果两个都设置,Style&Trigger将被忽略。

相关内容

  • 没有找到相关文章

最新更新