- Я запутался с Silverlight, извините.

т мне нужно проверить некоторые текстовые поля в моем приложении. Я решил использовать правило проверки «DataErrorValidationRule». Вот почему в моем классе я реализовал интерфейс IDataErrorInfo и написал подходящие функции. В своем коде xaml я добавил привязки и правила проверки к текстовым полям

 <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>

Проверка этого текстового поля в порядке - я имею в виду, красная рамка появляется в текстовом поле, если данные неверны. Однако, что мне нужно сделать, это показать всплывающую подсказку в этом текстовом поле, но что более важно, я должен отключить кнопку «Выполнить», если какие-либо текстовые поля содержат неверные данные. Каков наилучший способ сделать?

РЕДАКТИРОВАТЬ Первая проблема была решена, но у меня есть другая. Мне нужно использовать 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>

Мой конвертер выглядит так

 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
}

Однако я получаю invalidCastException в этом конвертере. Каков правильный состав в этом случае? Я думаю, что HasError является типом bool, поэтому я должен привести к bool.

Ответы на вопрос(0)

Ваш ответ на вопрос