Обновить свойство в ViewModel также, если есть ошибки проверки - PullRequest
1 голос
/ 03 июля 2019

В моем приложении у меня есть следующее определение DataGridTemplateColumn:

<DataGridTemplateColumn Header="Placeholder-Name" Width="*">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <ComboBox IsEditable="True" VerticalAlignment="Center" Margin="2"
                      ItemsSource="{Binding DataContext.AvailablePlaceholders, RelativeSource={RelativeSource FindAncestor, AncestorType=Window}}"
                      DisplayMemberPath="PlaceholderName"
                      Validation.ErrorTemplate="{StaticResource ComboBoxErrorTemplate}">
                <ComboBox.Text>
                    <Binding Path="PlaceholderName" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged">
                        <Binding.ValidationRules>
                            <local:PlaceholderValidationRule>
                                <local:PlaceholderValidationRule.PlaceholderValidationRuleParamData>
                                    <local:PlaceholderValidationRuleParamData 
                                        UsedPlaceholders="{Binding Source={StaticResource proxy}, Path=Data.PlaceholderItems}"
                                        AvailablePlaceholders="{Binding Source={StaticResource proxy}, Path=Data.AvailablePlaceholders}"/>
                                </local:PlaceholderValidationRule.PlaceholderValidationRuleParamData>
                            </local:PlaceholderValidationRule>
                        </Binding.ValidationRules>
                    </Binding>
                </ComboBox.Text>
            </ComboBox>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

Все отлично с этим работает, но я только что понял, что если PlaceholderValidationRule сообщает о недопустимом результате, свойство PlaceholderName в моемViewModel, к которому привязан текст ComboBox, обновляться не будет.

Есть ли способ обновить свойство в ViewModel из представления, в том числе при наличии ошибок валидации?

1 Ответ

2 голосов
/ 03 июля 2019

Есть ли способ обновить свойство в ViewModel из представления также при наличии ошибок валидации?

Установить для свойства ValidationStep ValidationRule значение UpdatedValue:

<local:PlaceholderValidationRule ValidationStep="UpdatedValue">

Это приведет к запуску правила проверки после свойства источника было обновлено.

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