В приложении MVFM WPF, как я могу показать ошибку проверки для кнопки? - PullRequest
0 голосов
/ 10 октября 2018

У меня есть представление, которое привязано к модели представления, имеющей ряд свойств.Некоторые свойства привязаны непосредственно к элементам управления, таким как текстовые поля.Для них я установил шаблон проверки, который показывает красную рамку с угловой стрелкой, которая показывает ошибки для свойства в подсказке.

Другие свойства задаются формами, которые открываются в ответ на нажатия кнопок.Например, у меня есть кнопка с надписью «Нажмите, чтобы изменить длительность», которая открывает форму для редактирования свойств StartDate и EndDate.Кнопка привязана к команде в модели представления, которая открывает форму.

Модель представления реализует INotifyDataErrorInfo, поэтому для элементов управления, которые связаны непосредственно со свойствами, я могу просто прикрепить сообщения об ошибках к свойствам, которые онисвязаны с событием ErrorsChanged и вызывают его.

Что мне нужно, если даты начала и окончания установлены неправильно, тогда к кнопке применяется красная рамка и подсказка.Прикрепление ошибок к свойствам StartDate и EndDate не будет работать, поскольку кнопка не привязана к этим свойствам.

1 Ответ

0 голосов
/ 10 октября 2018

Я сделал то же самое в приложении, где есть дополнительный раздел данных, который необходимо заполнить, чтобы продолжить.Я смог создать для кнопки ошибку проверки, используя тег вроде:

<Button Grid.Column="1" Grid.Row="0" Content="{DynamicResource resEnterSecureInformation}" Width="200" Command="{Binding PrimaryApplicant.SecureInformation.OpenSecureInformationWindowCommand}" Tag="{Binding PrimaryApplicant.SecureInformationComplete, ValidatesOnDataErrors=True}"></Button>

У меня также был стиль в app.xaml для добавления красного контура и всплывающей подсказки, когдабыла установлена ​​ошибка:

<Style TargetType="Button">
            <Setter Property="ToolTip" Value="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=(Validation.Errors)/ErrorContent}"></Setter>
            <Style.Triggers>
                <Trigger Property="IsVisible" Value="True">
                    <Setter Property="Validation.ErrorTemplate">
                        <Setter.Value>
                            <ControlTemplate>
                                <Border BorderBrush="Red"  BorderThickness="1" >
                                    <AdornedElementPlaceholder/>
                                </Border>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Trigger>
                <Trigger Property="IsEnabled" Value="False">
                    <Setter Property="Validation.ErrorTemplate">
                        <Setter.Value>
                            <ControlTemplate>
                                <AdornedElementPlaceholder/>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Trigger>
            </Style.Triggers>
        </Style>

Я также сделал это, чтобы не показывать ошибку проверки, когда кнопка была отключена (не нужно показывать пользователю то, что он не может открыть и исправить)

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...