Я новичок в WPF и C #, и у меня проблема с моим приложением.У меня есть TextBox, на котором я хочу иметь ValidationRule для проверки текста.Теперь я хочу иметь значение по умолчанию в TextBox, но я не могу понять, как это сделать.Я пробовал много способов, и советы, которые я нахожу при поиске проблемы, похоже, не работают вообще.
Также есть ли способ сделать это без использования файла класса 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 выглядит так:1008 *
<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()
{
}
}