2011-08-02 29 views
0

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

凡尺寸爲字符串的觀察的集合。它似乎綁定好,我得到預期數量的標籤和文本框,文本框包含默認值。但是,當我更改文本框中的某些內容時,我的驗證規則不會被調用。

我知道這可能是簡單的東西,但我卡住了。幫幫我?

回答

0

我不知道是什麼問題實際上是,但是當我更新了我的尺寸是DimensionView的一個ObservableCollection其中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> 

我想也許它只是不喜歡路徑=「/」

1

嘗試......

<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

我認爲你需要在綁定元素上設置ValidatesOnDataErrors =「True」,所以它看起來像這樣。

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

我認爲,ValidatesOnDataErrors實施有效性規則時,默認爲true,但不會傷害嘗試我猜。 –

+0

是的你是對的,我的第二個猜測是綁定有問題。在這種情況下,調試窗口中應該有一些輸出。 –