2011-11-08 32 views
1

我有一個列表視圖的單元模板定義如下的驗證規則:被稱爲PARAMS如何通過列表視圖作爲參數傳遞給細胞模板

<DataTemplate x:Key="editableIPAddressColTemplate"> 
    <Grid x:Name="dtTemplateGrid"> 
     <TextBlock Width="100" FontSize="11" Text="{Binding ElementName=txt, Path=Text, Mode=TwoWay}" 
        ToolTip="{Binding ElementName=txt, Path=ToolTip, Mode=OneWay}" 
         Style="{StaticResource GridBlockStyle}"> 
     </TextBlock> 
     <TextBox x:Name="txt" FontSize="11" Width="100" Style="{StaticResource GridEditStyle}" 
       Validation.Error="TextBox_Error" LostFocus="txt_LostFocus" > 
      <Binding Path="IPAddress" Mode="TwoWay" ValidatesOnDataErrors="True" 
        ValidatesOnExceptions="True" NotifyOnValidationError="True"> 
       <Binding.ValidationRules> 
        <local:IPAddressValidationRule> 
         <local:IPAddressValidationRule.Params> 
          <local:ValidationParameters BoundListView="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListView}}}"/> 
         </local:IPAddressValidationRule.Params> 
        </local:IPAddressValidationRule> 
       </Binding.ValidationRules> 
      </Binding> 
     </TextBox> 
    </Grid>     
</DataTemplate> 

的IPAddressValidationRule從有效性規則派生並具有財產是ValidationParameters類型的。 ValidationParameters類派生自依賴對象,並且具有名爲BoundListView的屬性,該屬性的類型爲ListView。

當我通過調試器看到IPValidationRule類時,BoundListView屬性始終爲空。我究竟做錯了什麼?

如果有人能幫我弄清楚這一點,我將不勝感激。

非常感謝。

回答

2

你必須在樹上休息,驗證規則只是飄起作爲綁定的屬性,你不能在這樣的斷線位置使用ElementNameRelativeSource。檢查輸出窗口,你應該能夠看到關於這個的一些綁定錯誤。

你可以嘗試命名ListView和設置使用x:ReferenceBinding.Sourcex:Reference不喜歡週期性的依賴關係,所以你需要注意這一點)

+0

非常感謝你。這工作!你今天救了我! –

+0

@RaveendraLanda:不客氣,很高興幫助! :) –

相關問題