Dot-Net

驗證錯誤模板 - 綁定異常

  • September 21, 2012

我正在使用以下模板進行驗證錯誤

<ControlTemplate>
   <Border BorderBrush="Red" BorderThickness="1">
       <Grid>
           <Polygon Points="8,8 8,0 0,0"
                    Stroke="Black"
                    StrokeThickness="1"
                    Fill="Red"
                    HorizontalAlignment="Right"
                    VerticalAlignment="Top"
                    ToolTip="{Binding ElementName=adorner, Path=AdornedElement.(Validation.Errors)[0].ErrorContent}" />
           <AdornedElementPlaceholder x:Name="adorner"/>
       </Grid>
   </Border>
</ControlTemplate>

ToolTip 工作正常,但在離開目前記錄後拋出以下異常:

System.Windows.Data 錯誤:17:無法從“(Validation.Errors)”(類型“ReadOnlyObservableCollection`1”)獲取“Item []”值(類型“ValidationError”)。BindingExpression:Path=AdornedElement.(0)[0].ErrorContent; DataItem=‘AdornedElementPlaceholder’(名稱=‘裝飾者’);目標元素是 ‘Polygon’ (Name=’’); 目標屬性是“工具提示”(類型“對象”) ArgumentOutOfRangeException:“System.ArgumentOutOfRangeException:指定的參數超出了有效值的範圍。

我嘗試了HasError財產,但失敗了。有人有什麼想法嗎?

當沒有驗證錯誤時,綁定仍然試圖訪問 Validation.Errors 返回的 ReadOnlyObservableCollection 中的第一個元素,但是因為它是空的,所以拋出了異常。

綁定係統只是吞下異常,但它仍然煩人且不必要。

而不是像這樣綁定:

Path=AdornedElement.(Validation.Errors)[0].ErrorContent

..你可以這樣做,以避免異常:

Path=AdornedElement.(Validation.Errors).CurrentItem.ErrorContent

引用自:https://stackoverflow.com/questions/12534185