Правило валидации не вызывается - PullRequest
0 голосов
/ 02 августа 2011

В моем XAML есть следующий код:

<ItemsControl ItemsSource="{Binding Dimensions}">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto" />
                            <ColumnDefinition MinWidth="100" MaxWidth="300" />
                        </Grid.ColumnDefinitions>

                        <Label Grid.Column="0"
                               Content="Dimension x" 
                               Target="{Binding ElementName=DimTextBox}" />
                        <TextBox Grid.Column="1" Name="DimTextBox" >
                            <Binding Path="/"  UpdateSourceTrigger="PropertyChanged">
                                <Binding.ValidationRules>
                                    <valid:DataSetDimensionValidationRule />
                                </Binding.ValidationRules>
                            </Binding>
                        </TextBox>
                    </Grid>
                </DataTemplate>              
            </ItemsControl.ItemTemplate>                
        </ItemsControl>

Где Размеры - это наблюдаемая коллекция строк. Кажется, что это нормально, я получаю ожидаемое количество меток и текстовых полей, а текстовые поля содержат значение по умолчанию. Однако, когда я что-то изменяю в текстовом поле, мое правило проверки не вызывается.

Я знаю, что это, вероятно, что-то простое, но я застрял. Помощь

Ответы [ 3 ]

1 голос
/ 02 августа 2011

Попробуйте это ...

<TextBox Grid.Column="1" Name="DimTextBox" >
    <Binding ValidatesOnExceptions="True" Path="/" UpdateSourceTrigger="PropertyChanged">
        <Binding.ValidationRules>
            <valid:DataSetDimensionValidationRule />
        </Binding.ValidationRules>
    </Binding>
</TextBox>

Редактировать: Если вышеприведенное не работает, попробуйте возиться с этими свойствами в правиле проверки: http://msdn.microsoft.com/en-us/library/cc647541.aspx

0 голосов
/ 02 августа 2011

Я не уверен, в чем действительно была проблема, но когда я обновил мои Dimensions, чтобы они стали ObservableCollection DimensionView, где DimensionView - это мой собственный класс, содержащий метку и значение, с которым он работалКод:

<Label Grid.Column="0"
                           Content="{Binding Label}" 
                           Target="{Binding ElementName=DimTextBox}" />
                    <TextBox Grid.Column="1" Name="DimTextBox" >
                        <Binding Path="Value"  UpdateSourceTrigger="PropertyChanged">
                            <Binding.ValidationRules>
                                <valid:DataSetDimensionValidationRule />
                            </Binding.ValidationRules>
                        </Binding>
                    </TextBox>

Полагаю, возможно, ему просто не понравился Path = "/"

0 голосов
/ 02 августа 2011

Я думаю, вам просто нужно установить ValidatesOnDataErrors = "True" для вашего элемента привязки, чтобы он выглядел следующим образом.

<TextBox Grid.Column="1" Name="DimTextBox" >
     <Binding Path="/"  UpdateSourceTrigger="PropertyChanged">
           <Binding.ValidationRules>
               <valid:DataSetDimensionValidationRule />
           </Binding.ValidationRules>
     </Binding>
</TextBox>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...