У меня есть три текстовых поля в моем приложении wpf. Когда пользователь вводит значение в эти текстовые поля и нажимает Add
, они добавляются в список и отображаются в сетке данных.
Текстовые поля не привязаны ни к чему как таковому, и я добавляю эти значения текстовых полей в коллекцию наблюдения, привязанную к сетке данных. Я хочу запретить пользователю вводить пустые значения в текстовые поля. Как это делается?
Я видел несколько примеров, но все они имели текстовое поле, привязанное к значениям, а затем использовали Binding.Validation
. Как это будет сделано в моем случае, когда есть привязка к текстовому полю?
У меня также есть кнопка, которая должна быть заморожена при вводе пустых значений. для этого я использовал следующий подход, создав класс и привязав класс следующим образом;
<Button.Style>
<Style TargetType="{x:Type Button}">
<Setter Property="IsEnabled" Value="false" />
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding ElementName=textBox1, Path=(Validation.HasError)}" Value="false" />
<Condition Binding="{Binding ElementName=textBox2, Path=(Validation.HasError)}" Value="false" />
<Condition Binding="{Binding ElementName=TextBoxAge, Path=(Validation.HasError)}" Value="false" />
</MultiDataTrigger.Conditions>
<Setter Property="IsEnabled" Value="true" />
</MultiDataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
Класс .cs
public class TextBoxNotEmptyValidationRule : ValidationRule
{
public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
{
string str = value as string;
if (str != null)
{
if (str.Length > 0)
return ValidationResult.ValidResult;
}
return new ValidationResult(false, Message);
}
public string Message { get; set; }
}