c# - 如何在 ValidationResult 中使用带有 mahapps.metro 和 wpflocalization 扩展的动态本地化?
问题描述
我正在使用 mahapps.metro 为 UI 和 WPFLocalizeExtension 作为本地化提供程序在 WPF 中创建登录表单。
我的问题是我想在电子邮件文本框的 ValidationResult 中使用 DynamicLocalization,但没有成功。
我试着这样做:
** Form.xaml **
<TextBox x:Name="TextBoxEmail" HorizontalAlignment="Center" Margin="0,10" TextWrapping="Wrap" VerticalAlignment="Top" Width="400" Grid.Row="2">
<TextBox.Text>
<Binding Path="Email" UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<local:EmailValidator ValidatesOnTargetUpdated="True"/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
电子邮件验证器.cs
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Net.Mail;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using EmailValidation;
using System.Windows.Controls;
using System.Windows.Data;
namespace AppNamespace
{
public class EmailValidator : ValidationRule
{
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{
string mail = (string)value;
if (IsValid(mail))
{
return ValidationResult.ValidResult;
}
var loc = new WPFLocalizeExtension.Extensions.LocExtension("EmailIncorrect");
return new ValidationResult(false, loc);
}
private static bool IsValid(string address)
{
return EmailValidation.EmailValidator.Validate(address);
}
}
}
但是这种方法只会导致 Localize 扩展的 ToString() 结果,它根本不翻译,而是字符串形式。
Loc:<key>
解决方案
推荐阅读
- azure - 嵌套 Java 对象/Json (Spring Boot) 的 CosmosDb 分区键
- c++ - C++ 是否提供了一种在没有范围解析运算符的情况下访问类中的类的方法?
- sql-server - BCP - 在数据插入中包含终止符
- html - HTML 不会居中
- html - Edge 是否应该避免使用 HTML 元标记?
- xslt - Camel 与 XSLT 2.0 和 xsl:result-document 将文件保存在路由目的地
- php - 作曲家内存限制泊坞窗
- javascript - 使用 Javascript 的 map、reduce 或 filter 计算数组中元素的出现次数
- java - 如何计算 JsonArray 中的对象?
- typescript - Typescript + Vue.js:“从不”类型上不存在属性“xxx”