wpfアプリケーションに3つのテキストボックスがあります。ユーザーがこれらのテキストボックスに値を入力してクリックするとAdd
、これらがリストに追加され、データグリッドに表示されます。
テキストボックス自体は何にもバインドされていません。これらのテキストボックスの値を、データグリッドにバインドされたobservaleコレクションに追加します。ユーザーがテキストボックスに空の値を入力できないようにしたい。それはどのように行われますか?
私はいくつかの例を見ましたが、それらはすべて値にテキストボックスが表示されてから使用され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; }
}