wpf validation - как я могу получить этот код для запуска проверки при наборе текста (ср. при выходе из поля) - PullRequest
3 голосов
/ 10 сентября 2010

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

                <TextBox IsEnabled="{Binding ElementName=ProxyModeRadioButton, Path=IsChecked}"
                         Width="Auto" Name="ProxyHostTextBox" VerticalAlignment="Center" MinWidth="150" >
                    <TextBox.Text>
                        <Binding Path="Proxy" >
                            <Binding.ValidationRules>
                                <local:SpecialCharactersRule/> 
                            </Binding.ValidationRules>
                        </Binding>
                    </TextBox.Text>
                </TextBox>

спасибо

Ответы [ 2 ]

5 голосов
/ 10 сентября 2010

1001 * попробовать *

<TextBox IsEnabled="{Binding ElementName=ProxyModeRadioButton, UpdateSourceTrigger=PropertyChanged, Path=IsChecked}" Width="Auto" Name="ProxyHostTextBox" VerticalAlignment="Center" MinWidth="150" >
    <TextBox.Text>
        <Binding Path="Proxy" >
            <Binding.ValidationRules>
                <local:SpecialCharactersRule/> 
            </Binding.ValidationRules>
        </Binding>
    </TextBox.Text>
</TextBox>

Обратите внимание на UpdateSourceTrigger = PropertyChanged в привязке.

UPDATE

Как указано ниже вслепую, я поместил UpdateSourceTrigger в неправильное поле привязки ... моя ошибка. Это должно идти с TextBox.Text. Извините за это ...

<TextBox IsEnabled="{Binding ElementName=ProxyModeRadioButton, Path=IsChecked}" Width="Auto" Name="ProxyHostTextBox" VerticalAlignment="Center" MinWidth="150" >
    <TextBox.Text>
        <Binding Path="Proxy" UpdateSourceTrigger="PropertyChanged" >
            <Binding.ValidationRules>
                <local:SpecialCharactersRule/> 
            </Binding.ValidationRules>
        </Binding>
    </TextBox.Text>
</TextBox>
2 голосов
/ 10 сентября 2010

Дейв почти прав, но я думаю, вы хотите, чтобы ваша проверка происходила при изменении свойства TEXT, поэтому вам нужно добавить UpdateSourceTrigger=PropertyChanged к привязке TEXT

<TextBox IsEnabled="{Binding ElementName=ProxyModeRadioButton, Path=IsChecked}"
         Width="Auto" Name="ProxyHostTextBox" VerticalAlignment="Center" MinWidth="150">
<TextBox.Text>
    <Binding Path="Proxy" UpdateSourceTrigger="PropertyChanged">
        <Binding.ValidationRules>
            <local:SpecialCharactersRule/> 
        </Binding.ValidationRules>
    </Binding>
</TextBox.Text>

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