XAML 如何减少TextBox的维数

jdg4fx2g  于 2023-04-18  发布在  其他
关注(0)|答案(2)|浏览(146)

我使用的是MDIX框架,它提供了一个名为MaterialDesignTextFieldBoxTextBoxStyle资源。当我应用这种风格时,我将为TextBox获得一个非常大的维度:

<TextBox materialDesign:HintAssist.Hint="Search" Style="{StaticResource MaterialDesignTextFieldBoxTextBox}" />

(不知道为什么图像没有显示)。
无论如何,我想降低该控件的高度。我尝试使用以下代码:

<TextBox materialDesign:HintAssist.Hint="{DynamicResource search}">
     <TextBox.Resources>
       <Style TargetType="TextBox" BasedOn="{StaticResource MaterialDesignTextFieldBoxTextBox}">
           <Setter Property="Height" Value="30" />
       </Style>
     </TextBox.Resources>
 </TextBox>

这样,hint就会消失:

我该怎么办?

m1m5dgzv

m1m5dgzv1#

使用MDIX v2.4.0(最新版)。
如果你不做任何改变,只看样式本身,你会得到这样的结果:

这里有三种MDIX样式值得一看:

  1. MaterialDesignTextBox是MDIX中的基本TextBox样式。
  2. MaterialDesignFloatingHintTextBox派生自MaterialDesignTextBox,并将HintAssist.IsFloating设置为true。这是上图中浮动的蓝色“搜索”文本。
  3. MaterialDesignTextAreaTextBox派生自MaterialDesignFloatingHintTextBox,并将TextFieldAssist.HasTextAreaBox设置为true。
    手动设置高度较短的最大问题是文本框周围的灰色区域。当设置TextFieldAssist.HasTextAreaBox=true时,该区域会打开。当该属性设置为true时,该区域只是一个边框控件,它在边界上设置了几个属性。特别注意margin和padding设置器。这些都是关于特定最小大小的假设。另一个问题是HintAssist.IsFloating=true。当您设置此选项时,它会在文本框周围分配一些空间用于显示提示。
    如果同时启用这两个属性,您将无法在将文本框大小减小到30的情况下仍然使用所有这些功能。您可以简单地将其关闭,但此时您仍使用基本的MaterialDesignTextBox样式。
    我觉得这样的东西是你想要的。
<TextBox materialDesign:HintAssist.Hint="Search">
    <TextBox.Resources>
        <Style TargetType="TextBox" BasedOn="{StaticResource MaterialDesignTextBox}">
            <Setter Property="Height" Value="30" />
        </Style>
    </TextBox.Resources>
</TextBox>

如果您想启用浮动提示或文本区域边框,则需要增加高度。

**编辑:**如果你想模拟文本区域边框的外观,你可以像这样将TextBox Package 在边框中:

<Border CornerRadius="4" Background="{DynamicResource MaterialDesignTextFieldBoxBackground}" Padding="0,0,0,4">
    <TextBox materialDesign:HintAssist.Hint="Search">
        <TextBox.Resources>
            <Style TargetType="TextBox" BasedOn="{StaticResource MaterialDesignTextBox}">
                <Setter Property="Height" Value="30" />
            </Style>
        </TextBox.Resources>
    </TextBox>
</Border>
vyswwuz2

vyswwuz22#

在最新版本中,您可以使用以下选项:

<TextBox materialDesign:TextFieldAssist.TextFieldCornerRadius="10"  materialDesign:HintAssist.Hint =" Name" Style={StaticResource MaterialDesignOutlinedTextBox} />

相关问题