原文轉載自慧都控件網:http://www.evget.com/zh-CN/Info/catalog/18232.html
提高錯誤管理
在Mindscape WPF Elements中現在又優化了錯誤管理,可以通過定製屬性網格來提供更多的信息的錯誤處理。
修改自定義編輯器
在Mindscape WPF Elements中提供了一個自定義編輯屬性,你可以創建你的錯誤管理的用戶界面來作爲你模版的一部分,下面的代碼顯示“英尺和尺寸”的編輯器使用tooltip和彈出窗口用來顯示驗證錯誤。
附加驗證的編輯器
<DataTemplate x:Key='FeetAndInchesEditorWithValidation'>
<ms:TextBox BorderThickness='0' Text='{Binding Value, UpdateSourceTrigger=PropertyChanged, Converter={StaticResource FeetAndInchesConverter}, ValidatesOnExceptions=True, ValidatesOnDataErrors=True}' Style='{StaticResource TextBoxStandardErrorHandling}'>
</ms:TextBox>
</DataTemplate>
常見樣式的文本處理驗證錯誤
<Style TargetType='{x:Type ms:TextBox}' x:Key='TextBoxStandardErrorHandling'>
<Setter Property='Control.Template'>
<Setter.Value>
<ControlTemplate TargetType='{x:Type ms:TextBox}'>
<DockPanel>
<ToggleButton x:Name='ErrorPlaceholder' Style='{StaticResource ErrorPopupTriggerStyle}'/>
<Popup PlacementTarget='{Binding ElementName=ErrorPlaceholder}' AllowsTransparency='True' StaysOpen='False' Placement='Bottom' IsOpen='{Binding ElementName=ErrorPlaceholder, Path=IsChecked}'>
<ItemsControl ItemTemplate='{StaticResource ValidationErrorMessage}' ItemsSource='{Binding RelativeSource={RelativeSource AncestorType={x:Type ms:TextBox}}, Path=(Validation.Errors)}'/>
</Popup>
<ScrollViewer x:Name='PART_ContentHost'/>
</DockPanel>
<ControlTemplate.Triggers>
<Trigger Property='Validation.HasError' Value='True'>
<Setter TargetName='ErrorPlaceholder' Property='Visibility' Value='Visible'/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property='Validation.ErrorTemplate'>
<Setter.Value>
<ControlTemplate>
<DockPanel>
<Ellipse Margin='0,0,6,0' ToolTip='{Binding ElementName=EditorHolder, Path=AdornedElement.(Validation.Errors)[0], Converter={StaticResource InnerExceptionExtractor}}' Width='8' Height='8' Fill='Red'/>
<AdornedElementPlaceholder x:Name='EditorHolder'/>
</DockPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
內置的編輯器樣式
對於內置編輯器的屬性,可以使用樣式通過屬性編輯器來創建你的錯誤處理的用戶界面。
還可以定義錯誤處理用戶接口,通過內置編輯器的所有實例來應用,而不是在屬性和屬性的基礎上,使用BuiltInEditorStyles屬性。這個例子展示瞭如何添加錯誤處理到文本編輯器,值得注意FirstName和Surname着兩種屬性會自動的得到新的樣式,儘管沒有自定義風格的屬性編輯器分配給這兩個屬性。
添加錯誤處理到內置文本編輯器
<ms:PropertyGrid.BuiltInEditorStyles>
<ms:BuiltInEditorStyleCollection>
<ms:BuiltInEditorStyle EditorKey='{x:Static ms:PropertyGrid.SimpleTextEditorKey}' Style='{StaticResource TextBoxStandardErrorHandling}'/>
</ms:BuiltInEditorStyleCollection>
</ms:PropertyGrid.BuiltInEditorStyles>