簡體   English   中英

未調用驗證規則

[英]Validation rule not being called

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

其中Dimensions是可觀察的字符串集合。 似乎綁定成功,我得到了預期數量的標簽和文本框,並且這些文本框包含默認值。 但是,當我在文本框中更改某些內容時,不會調用我的驗證規則。

我知道這可能很簡單,但我被困住了。 救命?

嘗試這個...

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

編輯:如果上述方法不起作用,請嘗試驗證規則上的以下屬性: http : //msdn.microsoft.com/zh-cn/library/cc647541.aspx

我認為您只需要在綁定元素上設置ValidatesOnDataErrors =“ True”即可,如下所示。

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

我不確定實際上是什么問題,但是當我將我的Dimensions更新為DimensionView的ObservableCollection時,其中DimensionView是我自己的包含Label和Value的類。 碼:

<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 =“ /”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM