こんにちは 私のアプリケーションでいくつかのテキストボックスを検証する必要があります。私は検証ルール "DataErrorValidationRule"を使用することに決めました。だから私のクラスで私はIDataErrorInfoインターフェイスを実装し、適切な関数を書いています。私のXAMLコードでは、私はテキストボックスにバインドし、検証ルールを追加し、このテキストボックスのwpf - validation - ツールチップを表示して「実行」ボタンを無効にする方法
<TextBox x:Name="txtName" Grid.Column="3" Grid.Row="1" TextAlignment="Center" >
<TextBox.Text>
<Binding Path="Name" >
<Binding.ValidationRules>
<DataErrorValidationRule></DataErrorValidationRule>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
検証はOKです - 私は、データが間違っている場合は、赤枠がテキストボックスに表示されますを意味します。しかし、私がする必要があるのは、そのテキストボックスにツールチップを表示することですが、テキストボックスに間違ったデータがある場合は、「実行」ボタンを無効にする必要があります。タトゥーをする最良の方法は何ですか?
EDIT 最初の問題は解決しましたが、別の問題があります。ボタンを検証するためにMultiBindingsを使用する必要があります。だから私はその
<Button x:Name="btnArrange" Grid.Column="0" Content="Rozmieść" Click="btnArrange_Click" >
<Button.Style>
<Style TargetType="Button">
<Style.Triggers>
<DataTrigger Value="False">
<DataTrigger.Binding>
<MultiBinding Converter="{StaticResource BindingConverter}">
<Binding ElementName="txtName" Path="Validation.HasError" />
<Binding ElementName="txtSurname" Path="Validation.HasError"/>
<Binding ElementName="txtAddress" Path="Validation.HasError"/>
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="IsEnabled" Value="False"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
ようSTHをした私は、このコンバータでInvalidCastExceptionが取得しかし私のコンバータは、その
public class Converters : IMultiValueConverter
{
#region IMultiValueConverter Members
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if(values !=null && values.Length > 0)
{
if (values.Cast<type>().Count(val => val) > 0)
return false;
return true;
}
return false;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
return null;
}
#endregion
}
のように見えます。その場合、適切なキャストは何ですか? HasErrorがbool型のように私はthoghtので、私はboolにキャストする必要があります。
「タイプ」とはどういう意味ですか?それを "if(values.Cast().Any(val => val))"に置き換えます。 " –
vorrtex