首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >与另一个文本框重叠的materialdesigninxaml - TextBox验证文本

与另一个文本框重叠的materialdesigninxaml - TextBox验证文本
EN

Stack Overflow用户
提问于 2019-07-14 09:46:24
回答 2查看 4.6K关注 0票数 4

我试图制作简单的登录表格卡,在里面我有TextBox作为用户名,PasswordBox作为密码。我添加了验证规则(如materialdesigninxaml的演示应用程序所示),但问题是验证消息与PasswordBox重叠。

我尝试过为所有TextBox元素添加底部填充,但这并没有帮助。只有我能想到的解决方案是添加顶部填充到底部元素,但我不喜欢这个解决方案,因为它扰乱了我的布局。

用户控制:

代码语言:javascript
运行
复制
        <materialDesign:Card Padding="32" Margin="16" MaxWidth="500">
            <StackPanel>
                <TextBox x:Name="UsernameTextBox" materialDesign:HintAssist.Hint="Username"  MaxLength="20">
                    <TextBox.Text>
                        <Binding Path="Username" UpdateSourceTrigger="PropertyChanged">
                            <Binding.ValidationRules>
                                <rules:NotEmptyValidationRule ValidatesOnTargetUpdated="True" />
                            </Binding.ValidationRules>
                        </Binding>
                    </TextBox.Text>
                </TextBox>
                <PasswordBox x:Name="PasswordBox" materialDesign:HintAssist.Hint="Password" MaxLength="10" />
            </StackPanel>
        </materialDesign:Card>

ValidationRule:

代码语言:javascript
运行
复制
public class NotEmptyValidationRule : ValidationRule
    {
        public override ValidationResult Validate(object value, CultureInfo cultureInfo)
        {
            return string.IsNullOrWhiteSpace((value ?? "").ToString())
                ? new ValidationResult(false, "Field is required.")
                : ValidationResult.ValidResult;
        }
    }

本质上,我希望为这些验证消息保留空间,而不是在TextBox下面的元素上显示它们,只需对代码进行最少的修改(我不想手动向每个元素添加填充/边距)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-15 14:13:53

您可以在您的Style中创建一个全局App.xaml,在其中给所有TextBoxes提供一些底部空间:

代码语言:javascript
运行
复制
<Style TargetType="TextBox" BasedOn="{StaticResource MaterialDesignTextBox}">
    <Setter Property="Margin" Value="0,0,0,15" />
</Style>
票数 3
EN

Stack Overflow用户

发布于 2020-02-11 19:03:02

在选择弹出选项时,可以更改验证消息的位置。

代码语言:javascript
运行
复制
<Style TargetType="TextBox" BasedOn="{StaticResource MaterialDesignTextBox}">
    <Setter Property="materialDesign:ValidationAssist.UsePopup" Value="True" />
    <Setter Property="materialDesign:ValidationAssist.PopupPlacement" Value="Center" />
</Style>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57026242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档