Wpf 如何减少文本框的维数
我使用的是Wpf 如何减少文本框的维数,wpf,xaml,material-design-in-xaml,Wpf,Xaml,Material Design In Xaml,我使用的是MDIX框架,它提供了一个名为MaterialDesignTextFieldBoxTextBox的Style资源。当我应用这个样式时,我会得到一个非常大的文本框的尺寸: <TextBox materialDesign:HintAssist.Hint="Search" Style="{StaticResource MaterialDesignTextFieldBoxTextBox}" /> (我不知道为什么图像没有出现。) 不管怎样,我想降低控件的高度。我尝试使用以下
MDIX
框架,它提供了一个名为MaterialDesignTextFieldBoxTextBox
的Style
资源。当我应用这个样式时,我会得到一个非常大的文本框的尺寸:
<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>
这样,提示将消失:
如何处理此问题?使用MDIX v2.4.0(最新版本)
如果您不做任何更改而单独查看样式,则会得到如下结果:
这里有三种MDIX样式值得一看:
MaterialDesignTextBox
是MDIX中的
materialdesignfloatinghintextbox
源于MaterialDesignTextBox
和。这是上面图像中浮动的蓝色“搜索”文本
MaterialDesignTextAreaTextBox
源自materialdesignfloatinghintextbox
和李>
手动将高度设置为较短的最大问题是文本框周围的灰色区域。当您设置textfieldsassist.HasTextAreaBox=true
时,该选项将打开。当该属性设置为true时,该区域就是一个简单的区域。特别注意边距和填充设置器。这些都是关于特定最小尺寸的假设。
另一个问题是hintasist.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>
如果要启用浮动提示或文本区域边框,则需要增加高度
编辑:
如果要模拟文本区域边框的外观,可以将文本框包装成如下边框:
<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>
我会仔细阅读源代码,看看它的功能。这里有一个论坛,如果你的意思是希望mdix的人在这里回答,我添加了mdix标记,以防他们不访问stackoverflow(亵渎!)。你可能还想考虑在他们通常会挂的任何论坛中张贴。你只需要编辑你所引用的样式模板。从外观上看,他们可能只是在他们的模板中有一个硬设置的填充,它切断了其中的ContentPresenter,这就是你的提示消失的原因。尝试将
添加到覆盖中。否则,您需要查看它们的模板结构。@ChrisW。已尝试,结果相同。因此,在高度较低的材质设计TextFieldBoxTextBox
上是否不可能?如何使MaterialDesignTextBox
为灰色,并且具有与MaterialDesignTextFieldBoxTextBox
相同的角半径?谢谢。你可以把文本框用看起来很相似的边框包装起来。我用一个例子来编辑我的回答。最后一个问题:是否可以删除文本框的水平灰线?