【问题标题】:How to change margin of Textbox inside VisualBrush?如何更改 VisualBrush 中文本框的边距?
【发布时间】:2021-12-07 10:32:01
【问题描述】:

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

<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

【问题讨论】:

    标签: wpf xaml textbox watermark


    【解决方案1】:

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

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

    【讨论】:

    • 称我为小气,但一个孩子的典型容器可能是边框。
    • 谢谢,这正是我想要的。我可以问你一个问题吗?我也用过这个方法,但是没用。它通过添加背景属性来应用。你知道这是干什么用的吗?
    • @jskim,我唯一的解释是这种行为是由 wpf 渲染引擎(使用 direct3d)和 ignores? 空白空间决定的。您可能可以在source code 中进行一些挖掘
    猜你喜欢
    • 1970-01-01
    • 2011-04-13
    • 2011-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    • 1970-01-01
    • 2011-12-15
    相关资源
    最近更新 更多