XAML 如何在VisualBrush中更改文本框的边距?

pexxcrt2  于 2023-01-03  发布在  其他
关注(0)|答案(2)|浏览(141)

我在寻找文本框水印功能时遇到了这个方法。

<TextBox Name="txtBoxName" Width="120" Height="23">
      <TextBox.Resources>
        <VisualBrush x:Key="HelpBrush" TileMode="None" Opacity="0.3" Stretch="None" AlignmentX="Left">
          <VisualBrush.Visual>
            <TextBlock FontStyle="Italic" Text="Watermark effect"/>
          </VisualBrush.Visual>
        </VisualBrush>
      </TextBox.Resources>
      <TextBox.Style>
        <Style TargetType="TextBox">
          <Setter Property="Height" Value="23"/>
          <Setter Property="HorizontalAlignment" Value="Left"/>
          <Setter Property="VerticalAlignment" Value="Top"/>
          <Style.Triggers>
            <Trigger Property="Text" Value="{x:Null}">
              <Setter Property="Background" Value="{StaticResource HelpBrush}"/>
            </Trigger>
            <Trigger Property="Text" Value="">
              <Setter Property="Background" Value="{StaticResource HelpBrush}"/>
            </Trigger>
          </Style.Triggers>
        </Style>
      </TextBox.Style>
    </TextBox>

我想在VisualBrush中控制文本块的边距。
如果您将边距设置在内部,则它不会更改。
你怎么能移动它?
谢谢。
enter image description here

t3psigkw

t3psigkw1#

将TextBlock放入某个容器中,例如Grid

<VisualBrush.Visual>
    <Grid Background="Transparent">
        <TextBlock FontStyle="Italic" Text="Watermark effect" Margin="15,0"/>
    </Grid>
</VisualBrush.Visual>
u4dcyp6a

u4dcyp6a2#

必须为容器添加背景。

<VisualBrush.Visual>
    <Border
        Width="{Binding ActualWidth, ElementName=txtBoxName}"
        Height="{Binding ActualHeight, ElementName=txtBoxName}"
        Padding="{Binding Padding, ElementName=txtBoxName}"
        Background="Transparent">
        <TextBlock 
            Text="Watermark effect"
            TextWrapping="{Binding TextWrapping, ElementName=txtBoxName}"/>
    </Border>
</VisualBrush.Visual>

相关问题