Hızlı soru. WPF'de yapılandırılmış, bir değerin belirli bir aralıkta olduğundan emin olmak için denetleyen bir doğrulayıcı var. Bu harika çalışıyor.WPF: Değerleri, gelen veriden Doğrulama Kuralları'na geçirme
<TextBox Name="valueTxt" Style="{StaticResource SquareBox}" GotKeyboardFocus="amountTxt_GotKeyboardFocus" GotMouseCapture="amountTxt_GotMouseCapture" LostFocus="boxLostFocus" Height="25" Width="50">
<TextBox.Text>
<Binding Path="UnitCost" NotifyOnValidationError="True">
<Binding.ValidationRules>
<local:ValidDecimal MaxAmount="1000"></local:ValidDecimal>
</Binding.ValidationRules>
<Binding.Converter>
<local:CurrencyConverter addPound="False" />
</Binding.Converter>
</Binding>
</TextBox.Text>
</TextBox>
Ancak, bağlanmış olan verilerden Validator verileri başka bir parça geçmek eder: Aşağıdaki kod bakınız.
<local:ValidDecimal MaxAmount="1000" SKU="{Binding Path=tblProducts.ProductSKU}"></local:ValidDecimal>
Ancak, olup bu şekilde SKU değeri erişemez görünür: Ben sadece bu yüzden gibi doğrulayıcı delcaration bu katkı sağlayabileceğini üstlendi.
Herhangi bir öneriniz var mı?
sayesinde gibi pek SKU benim doğrulayıcıda ilan bir dize basitçe olduğunu de işaret değer olabilir
DÜZENLEME:
Sen bağımlılık özelliği kullanmak zorundapublic class ValidDecimal : ValidationRule
{
public int MaxAmount { get; set; }
public string SKU { get; set; }
public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
{
//validate the value as a decimal in to two decimal places
string cost = (string)value;
try
{
decimal decCost = decimal.Parse(cost);
if (SKU != "85555")
{
if (decCost <= 0 || decCost > MaxAmount)
{
return new ValidationResult(false, "Amount is not within valid range");
}
}
return new ValidationResult(true, null);
}
catch (Exception ex)
{
return new ValidationResult(false, "Not a valid decimal value");
}
}
}
bağlantı yardımcı oldu, ama görsel stüdyo bana hiçbir şey söylemedi. Onun sorgulayabildiğim bir çeşit hassas AI değil. – Sergio
tarafından ne kastettiğinizden emin değilim, bu işe katılıyorum, ancak bana aşırı. – zinking
başka bir yol: http://stackoverflow.com/questions/7456334/wpf-binding-property-in-validationrule –