in WPF auf TextBox Wert abhängig Set ich einige TextBox habe „kontrolliert“ durch einen Bereich Validator:ein RangeValidator Minimum
public class RangeValidator : ValidationRule
{
public int Min { get; set; }
public int Max { get; set; }
public bool CheckZeroValue { get; set; }
public RangeValidator() { }
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{
int Value = 0;
try
{
if (((string)value).Length > 0)
Value = Int32.Parse((String)value);
}
catch (Exception e)
{
return new ValidationResult(false, "Wrong Character - " + e.Message);
}
if (CheckZeroValue && (Value == 0))
return new ValidationResult(true, null);
if ((Value < Min) || (Value > Max))
{
return new ValidationResult(false, String.Format("The range is: {0} - {1}", Min, Max));
}
else
{
return new ValidationResult(true, null);
}
}
}
Nun, was ich tun möchte, ist, dass, wenn der Benutzer ein Textfeld Wert ändern, die Mindest der onother Textbox wird accordigly geändert, so etwas wie diese ..
<TextBox Grid.Row="1" Grid.Column="1" MaxLength="2" Name="FLD_OPEN_SNS_MIN">
<TextBox.Text>
<Binding Path='Fields[(local:EFields)FLD_OPEN_SNS_MIN]'
UpdateSourceTrigger="PropertyChanged"
NotifyOnValidationError="True"
ValidatesOnExceptions="True" >
<Binding.ValidationRules>
<local:RangeValidator Min="10" Max="50"/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
<TextBox Grid.Row="2" Grid.Column="1" MaxLength="3" Margin="5" >
<TextBox.Text>
<Binding Path='Fields[(local:EFields)FLD_OPEN_SNS_MAX]'
UpdateSourceTrigger="PropertyChanged"
NotifyOnValidationError="True"
ValidatesOnExceptions="True" >
<Binding.ValidationRules>
<local:RangeValidator Min="{Binding ElementName=FLD_OPEN_SNS_MIN,
Path=Text
Converter={StaticResource StringToIntConverter}}" Max="50"/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
das funktioniert nicht, weil ValidationRule-Klasse kein DependencyObject ist. Gibt es eine Möglichkeit, dies zu erreichen, ohne den Code zu verwenden?
vielen Dank @ mm8! – Barzo