WPF 및 C#에 익숙하지 않아 응용 프로그램에 문제가 있습니다. 텍스트 유효성을 검사하기 위해 ValidationRule이 필요한 TextBox가 있습니다. 이제 TextBox에 기본값을 갖고 싶지만 어떻게해야하는지 알 수 없습니다. 나는 문제의 인터넷 검색이 전혀 작동하지 않는 것처럼 보이는 많은 방법과 팁을 시도했다.C# WPF 바인딩, ValidationRule 및 기본값
또한 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);
}
// Valid!!!!
return new ValidationResult(true, null);
}
}
:
<TextBox x:Name="OPCAddressBox" Style="{StaticResource textBoxInError}" HorizontalAlignment="Right" TextWrapping="NoWrap" VerticalAlignment="Top" Margin="0,10,8,0" Width="150">
<TextBox.Text>
<Binding Path="OpcServerAddress" Source="{StaticResource pdd}" UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<local:OpcValidationRule />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
내 리소스는 다음과 같습니다
<Window.Resources>
<local:ProjectData Height="1000" Width="1000" OpcServerAddress="opc.tcp://address:port" x:Key="pdd"/>
<Style x:Key="textBoxInError" TargetType="{x:Type TextBox}">
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="ToolTip" Value="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=(Validation.Errors)[0].ErrorContent}"/>
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
내 ProjectData 파일은 다음과 같다 :
public class ProjectData
{
private string opcServerAddress;
public string OpcServerAddress
{
get { return opcServerAddress; }
set { opcServerAddress = value; }
}
public ProjectData()
{
}
}
Damascus 링크 덕분에 WPF 유효성 검사에 대해 더 잘 이해할 수있었습니다. 그러나 텍스트 상자에 기본값을 갖기 위해 원래의 문제에 대한 해결책을 찾지 못했습니다. – chiefi
아 죄송합니다.이 문제를 읽지 않았습니다 ... 몇 가지 유용한 조언을 통해 메시지를 수정했습니다. :) – Damascus
감사합니다. 귀하의 게시물 정말 날 도와 줬어. – chiefi