C# WPF绑定,ValidationRule和默认值

22 浏览
0 Comments

C# WPF绑定,ValidationRule和默认值

我是WPF和C#的新手,我在我的应用程序中遇到了问题。我想在一个TextBox上设置一个ValidationRule来验证文本。现在我想在TextBox中设置一个默认值,但我无法弄清楚如何做到这一点。我尝试了很多种方法,但是在Google搜索问题时找到的提示似乎都不起作用。

同时,有没有办法在不使用ProjectData类文件的情况下实现这个?对我来说,必须创建一个只有一个值的类来实现验证似乎有些奇怪。

我的ValidationRule看起来像这样:

public class OpcValidationRule : ValidationRule

{

public override ValidationResult Validate(object value, CultureInfo cultureInfo)

{

string source = (string)value;

if(!source.StartsWith("Test"))

{

return new ValidationResult(false, msg);

}

// 验证通过!!!

return new ValidationResult(true, null);

}

}

我的TextBox看起来像这样:

我的资源看起来像这样:

我的ProjectData文件看起来像这样:

public class ProjectData

{

private string opcServerAddress;

public string OpcServerAddress

{

get { return opcServerAddress; }

set { opcServerAddress = value; }

}

public ProjectData()

{

}

}

0
0 Comments

C# WPF绑定,ValidationRule和默认值的问题出现的原因是,通常情况下,如果要实现一个WPF应用程序,XAML文件将绑定到一个ViewModel,以保持属性。这样做可能看起来有点繁重,但是当你有更大的UI时,这样做非常方便。

解决方法是,首先,你的项目数据类必须实现"INotifyPropertyChanged"接口。这样可以在文本改变时触发一个事件,从而更新绑定。然后,在构造函数中初始化字符串的默认值。然后,通过绑定,文本框将具有你指定的默认值,并且每次修改时,opcServerAddress的值将根据文本框中的值进行更新。

这样做可以让你在ProjectData类(通常称为ViewModel)中使用这个字符串。使用MVVM模型会特别有帮助,MVVM模型是WPF中的一种常用模式。你可以在Google上找到一些很好的MVVM教程。

希望能帮到你!

0