目录
2.9.1 ColumnDefinitionCollection
2.9.5 NotifyDataErrorValidationRule
2.9 一些Object的派生类
2.9.1 ColumnDefinitionCollection
提供对 ColumnDefinition 对象的有序强类型集合的访问。
public sealed class ColumnDefinitionCollection : IList<ColumnDefinition>, ICollection<ColumnDefinition>, IEnumerable<ColumnDefinition>, IEnumerable, IList, ICollection
{
//获取此 ColumnDefinitionCollection 实例中的项总数。
public int Count { get; }
//获取一个值,该值指示 ColumnDefinitionCollection 是否为只读。
public bool IsReadOnly { get; }
//获取一个值,该值指示是否同步对此 ColumnDefinitionCollection 的访问(即访问是否是线程安全的)。
public bool IsSynchronized { get; }
//获取一个值,它指示 ColumnDefinitionCollection 中的当前项。
public System.Windows.Controls.ColumnDefinition this[int index] { get; set; }
//获取可用于同步对 ColumnDefinitionCollection 的访问的对象。
public object SyncRoot { get; }
//向 ColumnDefinition 中添加一个 ColumnDefinitionCollection 元素。
public void Add(System.Windows.Controls.ColumnDefinition value);
//清除 ColumnDefinitionCollection 的内容。
public void Clear();
//确定 ColumnDefinition 中是否存在给定的 ColumnDefinitionCollection。
public bool Contains(System.Windows.Controls.ColumnDefinition value);
//将 ColumnDefinition 对象的数组复制到 ColumnDefinitionCollection 中的给定索引位置。
public void CopyTo(System.Windows.Controls.ColumnDefinition[] array, int index);
//返回给定 ColumnDefinition 在 ColumnDefinitionCollection 中的索引位置。
public int IndexOf(System.Windows.Controls.ColumnDefinition value);
//将 ColumnDefinition 插入 ColumnDefinitionCollection 中的指定索引位置。
public void Insert(int index, System.Windows.Controls.ColumnDefinition value);
//从 ColumnDefinition 中移除一个 ColumnDefinitionCollection。
public bool Remove(System.Windows.Controls.ColumnDefinition value);
//从 ColumnDefinition 中移除指定索引位置处的 ColumnDefinitionCollection。
public void RemoveAt(int index);
//从 ColumnDefinition 中移除一定范围的 ColumnDefinitionCollection 对象。
public void RemoveRange(int index, int count);
//有关此成员的说明,请参见 GetEnumerator()。
System.Collections.Generic.IEnumerator<System.Windows.Controls.ColumnDefinition> IEnumerable<ColumnDefinition>.GetEnumerator();
//有关此成员的说明,请参见 CopyTo(Array, Int32)。
void ICollection.CopyTo(Array array, int index);
//有关此成员的说明,请参见 GetEnumerator()。
System.Collections.IEnumerator IEnumerable.GetEnumerator();
//有关此成员的说明,请参见 Add(Object)。
int IList.Add(object value);
//有关此成员的说明,请参见 Contains(Object)。
bool IList.Contains(object value);
//有关此成员的说明,请参见 IndexOf(Object)。
int IList.IndexOf(object value);
//有关此成员的说明,请参见 Insert(Int32, Object)。
void IList.Insert(int index, object value);
//有关此成员的说明,请参见 IsFixedSize。
bool System.Collections.IList.IsFixedSize { get; }
//有关此成员的说明,请参见 Item[Int32]。
object System.Collections.IList.Item[int index] { get; set; }
//有关此成员的说明,请参见 Remove(Object)。
void IList.Remove(object value);
}
2.9.2 ExceptionValidationRule
表示用于检查绑定源属性更新过程中抛出的异常的规则。
使用 WPF 数据绑定模型可以 ValidationRules 与 Binding 对象关联。 ExceptionValidationRule类是一个内置规则,用于检查在绑定源属性更新过程中引发的异常。 您可以提供自定义逻辑来指定绑定引擎如何使用来处理这些异常 UpdateSourceExceptionFilterCallback 。 有关详细信息,请参阅 UpdateSourceExceptionFilter。
用于显式设置 ExceptionValidationRule 的替代语法是在 Binding 或 MultiBinding 对象上将 ValidatesOnExceptions 属性设置为 true
。
可以通过创建从派生的类来创建自定义规则 ValidationRule 。 有关数据验证的详细信息和详细讨论,请参阅 数据绑定概述。
public sealed class ExceptionValidationRule : ValidationRule
{
//对值执行验证检查。
public override System.Windows.Controls.ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo);
}
2.9.3 InkPresenter
在图面上呈现墨迹。
墨迹呈现以两种方式出现:动态和静态。 当墨迹写入墨迹图面时,动态呈现会出现:在收集笔画时,将呈现笔画。 在收集笔划数据并将其附加到新笔划后,会发生静态呈现。
若要使用动态呈现墨迹 InkPresenter ,请 RootVisual DynamicRenderer InkPresenter 使用 AttachVisuals 方法将的属性附加到。 若要以静态方式呈现墨迹,请将笔划对象添加到 Strokes 属性。
public class InkPresenter : Decorator
{
public static readonly System.Windows.DependencyProperty StrokesProperty;
//获取或设置 InkPresenter 显示的笔划。
public System.Windows.Ink.StrokeCollection Strokes { get; set; }
//获取一个值,该值等于 Decorator 的此实例的可视子元素数。
protected override int VisualChildrenCount { get; }
//排列 Decorator 元素的内容。
protected override System.Windows.Size ArrangeOverride(System.Windows.Size arrangeSize);
//将 DynamicRenderer 的视觉效果附加到 InkPresenter。
public void AttachVisuals(System.Windows.Media.Visual visual, System.Windows.Ink.DrawingAttributes drawingAttributes);
//从 DynamicRenderer 中分离 InkPresenter 的视觉效果。
public void DetachVisuals(System.Windows.Media.Visual visual);
//返回一个剪裁几何图形,它指示当 ClipToBounds 属性设置为 true 时要剪裁的区域。
protected override System.Windows.Media.Geometry GetLayoutClip(System.Windows.Size layoutSlotSize);
//获取位于指定 index 位置的子 Visual 元素。
protected override System.Windows.Media.Visual GetVisualChild(int index);
//测量 Decorator 的子元素,以准备在 ArrangeOverride(Size) 传递期间对其进行排列。
protected override System.Windows.Size MeasureOverride(System.Windows.Size constraint);
//提供 InkPresenterAutomationPeer 此控件的适当实现,作为 WPF 基础结构的一部分。
protected override System.Windows.Size MeasureOverride(System.Windows.Size constraint);
}
2.9.4 ItemCollection
包含构成 ItemsControl 的内容的项的列表。
ItemCollection 维护项的集合,如字符串、对象、XML 节点、元素和其他集合。 ItemsControl使用中的数据 ItemCollection 来生成其内容。 如果要聚合多个集合,请将分配给的 CompositeCollection ItemsSource 属性 ItemsControl 。
使用 Items 属性或 ItemsSource 属性来指定应用于生成的内容的集合 ItemsControl 。 如果 ItemsSource 设置了属性,则 Items 集合将变为只读且固定大小。 这意味着,如果使用 ItemsSource 属性,则不能直接在中添加、删除或更改项 ItemCollection 。
ItemCollection 为 CollectionView ,因此提供了集合视图功能,如排序、分组和筛选。 有关详细信息,请参阅SortDescriptions、Filter和GroupDescriptions。
有关集合视图的详细信息,请参阅 数据绑定概述。
public sealed class ItemCollection : CollectionView, IList, ICollection, IEnumerable, IEditableCollectionViewAddNewItem, IEditableCollectionView, ICollectionViewLiveShaping, IItemProperties, IWeakEventListener
{
//获取指示创建的 CollectionView 线程能更改 SourceCollection 的值。
protected bool AllowsCrossThreadChanges { get; }
//获取一个值,该值指示视图是否支持筛选。
public virtual bool CanFilter { get; }
//获取一个值,该值指示视图是否支持分组。
public virtual bool CanGroup { get; }
//获取一个值,该值指示视图是否支持排序。
public virtual bool CanSort { get; }
//返回可用于比较视图中的项的对象。
public virtual System.Collections.IComparer Comparer { get; }
//获取视图中的记录数。
public virtual int Count { get; }
//获取或设置排序期间使用的区域性信息。
public virtual System.Globalization.CultureInfo Culture { get; set; }
//获取视图中的当前项。
public virtual object CurrentItem { get; }
//获取 CurrentItem 在(可能经过排序和筛选)视图中的序号位置。
public virtual int CurrentPosition { get; }
//获取或设置用于确定某个项是否适合包含在视图中的方法。
public virtual Predicate<object> Filter { get; set; }
//获取 GroupDescription 对象的集合,该集合描述集合中的项在视图中的分组方式。
public virtual System.Collections.ObjectModel.ObservableCollection<System.ComponentModel.GroupDescription> GroupDescriptions { get; }
//获取顶级组的集合,该集合根据 GroupDescriptions 属性构造而成。
public virtual System.Collections.ObjectModel.ReadOnlyObservableCollection<object> Groups { get; }
//获取一个值,该值指示视图的 CurrentItem 是否超出集合的末尾。
public virtual bool IsCurrentAfterLast { get; }
//获取一个值,该值指示视图的 CurrentItem 是否在集合开头之前。
public virtual bool IsCurrentBeforeFirst { get; }
//获取一个值,该值指示 CurrentItem 是否位于 CurrentPosition。
protected bool IsCurrentInSync { get; }
//获取一个值,该值指示基础集合是否提供更改通知。
protected bool IsDynamic { get; }
//获取一个值,该值指示最终的(已筛选)视图是否为空。
public virtual bool IsEmpty { get; }
//获取指示所有对象是否支持此 CollectionView 事件的值。
public virtual bool IsInUse { get; }
//获取一个值,该值指示是否有某个未完成的 DeferRefresh() 正在运行。
protected bool IsRefreshDeferred { get; }
//获取一个值,该值指示视图是否需要刷新。
public virtual bool NeedsRefresh { get; }
//获取集合中表示新项的对象。
public static object NewItemPlaceholder { get; }
//获取 SortDescription 结构的集合,该集合描述集合中的项在视图中的排序方式。
public virtual System.ComponentModel.SortDescriptionCollection SortDescriptions { get; }
//返回未筛选的基础集合。
public virtual System.Collections.IEnumerable SourceCollection { get; }
//获取一个值,该值指示是否有必要更新更改日志,因为在 CollectionChanged 没有首先进入用户界面 (UI) 线程调度程序的情况下,已在其他线程上收到通知。
protected bool UpdatedOutsideDispatcher { get; }
//从更改日志中清除所有挂起的更改。
protected void ClearChangeLog();
//清除未处理更改为集合。
protected void ClearPendingChanges();
//返回一个值,该值指示指定项是否属于视图。
public virtual bool Contains(object item);
//进入延迟循环,该循环可用于将更改合并到视图并延迟自动刷新。
public virtual IDisposable DeferRefresh();
//从 CollectionView 中移除对基础集合的引用。
public virtual void DetachFromSourceCollection();
//返回可用于枚举视图中的项的对象。
protected virtual System.Collections.IEnumerator GetEnumerator();
//检索视图中位于从零开始的指定索引处的项。
public virtual object GetItemAt(int index);
//返回指定项所在的索引位置。
public virtual int IndexOf(object item);
//将指定项设置为视图中的 CurrentItem。
public virtual bool MoveCurrentTo(object item);
//将视图中的第一项设置为 CurrentItem。
public virtual bool MoveCurrentToFirst();
//将视图中的最后一项设置为 CurrentItem。
public virtual bool MoveCurrentToLast();
//将视图中位于 CurrentItem 之后的项设置为 CurrentItem。
public virtual bool MoveCurrentToNext();
//将位于指定索引位置的项设置为视图中的 CurrentItem。
public virtual bool MoveCurrentToPosition(int position);
//将视图中位于 CurrentItem 之前的项设置为 CurrentItem。
public virtual bool MoveCurrentToPrevious();
//返回一个值,该值指示视图是否可以更改作为 CurrentItem 的项。
protected bool OKToChangeCurrent();
//当 AllowsCrossThreadChanges 属性更改时发生。
protected virtual void OnAllowsCrossThreadChangesChanged();
//由基类调用,以通知派生类 CollectionChanged 事件已发送到消息队列。
protected virtual void OnBeginChangeLogging(System.Collections.Specialized.NotifyCollectionChangedEventArgs args);
//引发 CollectionChanged 事件。
protected virtual void OnCollectionChanged(System.Collections.Specialized.NotifyCollectionChangedEventArgs args);
protected void OnCollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs args);
//引发 CurrentChanged 事件。
protected virtual void OnCurrentChanged();
//引发 CurrentChanging 事件。
protected void OnCurrentChanging();
protected virtual void OnCurrentChanging(System.ComponentModel.CurrentChangingEventArgs args);
//用指定的参数引发 PropertyChanged 事件。
protected virtual void OnPropertyChanged(System.ComponentModel.PropertyChangedEventArgs e);
//返回一个值,该值指示基础集合中的指定项是否属于视图。
public virtual bool PassesFilter(object item);
//当在派生类中重写时,处理 UI 线程上的单个更改。
protected virtual void ProcessCollectionChanged(System.Collections.Specialized.NotifyCollectionChangedEventArgs args);
//确保此集合的所有待定更改都已被提交。
protected void ProcessPendingChanges();
//重新创建视图。
public virtual void Refresh();
//刷新视图或指定视图在延迟循环完成后需要刷新。
protected void RefreshOrDefer();
//重新创建视图。
protected virtual void RefreshOverride();
//设置 CollectionView 的当前项。
protected void SetCurrent (object newItem, int newPosition);
protected void SetCurrent(object newItem, int newPosition, int count);
//在更改树时发生。
protected virtual event System.Collections.Specialized.NotifyCollectionChangedEventHandler CollectionChanged;
//在 CurrentItem 更改后发生。
public virtual event EventHandler CurrentChanged;
//在 CurrentItem 正在更改时发生。
public virtual event System.ComponentModel.CurrentChangingEventHandler CurrentChanging;
//在属性值更改时发生。
protected virtual event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
//在更改树时发生。
event System.Collections.Specialized.NotifyCollectionChangedEventHandler System.Collections.Specialized.INotifyCollectionChanged.CollectionChanged;
//在属性值更改时发生。
event System.ComponentModel.PropertyChangedEventHandler System.ComponentModel.INotifyPropertyChanged.PropertyChanged;
//返回可用于枚举视图中的项的 IEnumerator 对象。
System.Collections.IEnumerator IEnumerable.GetEnumerator();
}
2.9.5 NotifyDataErrorValidationRule
表示一个规则,该规则检查由源对象的 INotifyDataErrorInfo 实现所引发的错误。
使用 WPF 数据绑定模型,您可以 ValidationRules 与 Binding 或对象关联 BindingGroup 。 NotifyDataErrorValidationRule类是一个内置规则,用于检查在绑定源属性更新过程中引发的异常。 您可以提供自定义逻辑来指定绑定引擎如何使用来处理这些异常 UpdateSourceExceptionFilterCallback 。 有关详细信息,请参阅 UpdateSourceExceptionFilter。
用于显式设置的替代语法 NotifyDataErrorValidationRule 是将 ValidatesOnExceptions 属性设置为对 true
Binding 、 MultiBinding 或 BindingGroup 对象。 默认情况下,的值 ValidatesOnExceptions 为 true
,因此不需要显式使用 NotifyDataErrorValidationRule 。
可以通过创建从派生的类来创建自定义规则 ValidationRule 。 有关数据验证的详细信息和详细讨论,请参阅 数据绑定概述。
public sealed class NotifyDataErrorValidationRule : ValidationRule
{
//对值执行验证检查。
public override System.Windows.Controls.ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo);
}
2.9.6 PrintDialog
调用标准的 Microsoft Windows 打印对话框,此对话框可根据用户输入配置 PrintTicket 和 PrintQueue,然后打印文档。
用户可以使用 " 打印 " 对话框选择打印机,对其进行配置,然后执行打印作业。
严格地说,您可以使用 PrintDocument 方法,而不必打开对话框。 在这种意义上,控件可用作不可见的打印组件。 但出于性能原因,最好是使用方法,或者使用的 AddJob 多个 Write 和 WriteAsync 方法之一 XpsDocumentWriter 。 有关详细信息,请参阅 如何:以编程方式打印 XPS 文件。
不要将此类 System.Windows.Controls.PrintDialog 与进行混淆 System.Windows.Forms.PrintDialog 。 后者用于 Windows 窗体应用程序。 System.Windows.Controls.PrintDialog 用于 Windows Presentation Foundation 应用程序。
class PrintDialog
{
//获取或设置一个值,该指示打印当前页的选项是否可用。
public bool CurrentPageEnabled { get; set; }
//获取或设置页范围内允许的最大页码。
public uint MaxPage { get; set; }
//获取或设置页范围内允许的最小页码。
public uint MinPage { get; set; }
//获取或设置在 PageRangeSelection 设置为 UserPages 时要打印的页范围。
public System.Windows.Controls.PageRange PageRange { get; set; }
//获取或设置此 PageRangeSelection 实例的 PrintDialog。
public System.Windows.Controls.PageRangeSelection PageRangeSelection { get; set; }
//获取页面的可打印区域的高度。
public double PrintableAreaHeight { get; }
//获取页面的可打印区域的宽度。
public double PrintableAreaWidth { get; }
//获取或设置一个表示选定的打印机的 PrintQueue。
public System.Printing.PrintQueue PrintQueue { get; set; }
//获取或设置当用户针对当前打印作业单击“打印”时 PrintDialog 使用的 PrintTicket。
public System.Printing.PrintTicket PrintTicket { get; set; }
//获取或设置指示是否启用打印所选页的选项的值。
public bool SelectedPagesEnabled { get; set; }
//获取或设置一个值,该值指示“打印”对话框的用户是否可以使用一个选项指定要打印的页范围。
public bool UserPageRangeEnabled { get; set; }
//将 DocumentPaginator 对象打印到当前选定的 PrintQueue。
public void PrintDocument(System.Windows.Documents.DocumentPaginator documentPaginator, string description);
//将派生自 Visual 类的可见(非文本)对象打印到当前选定的 PrintQueue。
public void PrintVisual(System.Windows.Media.Visual visual, string description);
//调用 PrintDialog 为模式对话框。
public bool? ShowDialog();
}
2.9.7 RowDefinitionCollection
提供对 RowDefinition 对象的有序强类型集合的访问。
public sealed class RowDefinitionCollection : IList<RowDefinition>, ICollection<RowDefinition>, IEnumerable<RowDefinition>, IEnumerable, IList, ICollection
{
//获取此 RowDefinitionCollection 实例中的项总数。
public int Count { get; }
//获取一个值,该值指示 RowDefinitionCollection 是否为只读。
public bool IsReadOnly { get; }
//获取一个值,该值指示是否同步对此 RowDefinitionCollection 的访问。(即访问是否是线程安全的。)
public bool IsSynchronized { get; }
//获取一个值,它指示 RowDefinitionCollection 中的当前项。
public System.Windows.Controls.RowDefinition this[int index] { get; set; }
//获取可用于同步对 RowDefinitionCollection 的访问的对象。
public object SyncRoot { get; }
//向 RowDefinition 中添加一个 RowDefinitionCollection 元素。
public void Add(System.Windows.Controls.RowDefinition value);
//清除 RowDefinitionCollection 的内容。
public void Clear();
//确定 RowDefinition 中是否存在给定的 RowDefinitionCollection。
public bool Contains(System.Windows.Controls.RowDefinition value);
//将 RowDefinition 对象的数组复制到 RowDefinitionCollection 中的给定索引位置。
public void CopyTo(System.Windows.Controls.RowDefinition[] array, int index);
//返回给定 RowDefinition 在 RowDefinitionCollection 中的索引位置。
public int IndexOf(System.Windows.Controls.RowDefinition value);
//将 RowDefinition 插入 RowDefinitionCollection 中的指定索引位置。
public void Insert(int index, System.Windows.Controls.RowDefinition value);
//从 RowDefinition 中移除一个 RowDefinitionCollection。
public bool Remove(System.Windows.Controls.RowDefinition value);
//从 RowDefinition 中移除指定索引位置处的 RowDefinitionCollection。
public void RemoveAt(int index);
//从 RowDefinition 中移除一定范围的 RowDefinitionCollection 对象。
public void RemoveRange(int index, int count);
//返回一个循环访问集合的枚举器。
System.Collections.Generic.IEnumerator<System.Windows.Controls.RowDefinition> IEnumerable<RowDefinition>.GetEnumerator();
//将该集合的元素复制到 Array(从特定的 Array 索引开始)。
void ICollection.CopyTo(Array array, int index);
//返回一个循环访问集合的枚举器。
System.Collections.IEnumerator IEnumerable.GetEnumerator();
//向集合中添加一项。
int IList.Add(object value);
//确定集合中是否包含特定值。
bool IList.Contains(object value);
//确定集合中特定项的索引。
int IList.IndexOf(object value);
//将某个项插入到集合中的指定索引处。
void IList.Insert(int index, object value);
//获取一个值,该值指示集合是否具有固定大小。
bool System.Collections.IList.IsFixedSize { get; }
//获取或设置指定索引处的元素。
object System.Collections.IList.Item[int index] { get; set; }
//从集合中移除特定对象的第一个匹配项。
void IList.Remove(object value);
}
2.9.8 SpellCheck
为文本编辑控件(如 TextBox 和 RichTextBox)提供实时拼写检查功能。
若要启用拼写检查器,请 SpellCheck.IsEnabled true
在文本编辑控件上将属性设置为。 启用此拼写检查器后,将使用红色波浪线为拼写错误的单词加下划线,如下图所示。 仅当 WPF 提供默认字典时,才支持拼写检查器。 在 .NET Framework 4 中,WPF 提供英语、法语、德语和西班牙语的字典。
若要添加自定义字典,请将词典文件的位置添加到 CustomDictionaries 集合中。
public sealed class SpellCheck
{
public static readonly System.Windows.DependencyProperty CustomDictionariesProperty;
public static readonly System.Windows.DependencyProperty IsEnabledProperty;
public static readonly System.Windows.DependencyProperty SpellingReformProperty;
//获取用于自定义拼写检查的词典文件位置的集合。
public System.Collections.IList CustomDictionaries { get; }
//获取或设置一个值,该值确定是否对此文本编辑控件(如 TextBox 或 RichTextBox)启用拼写检查器。
public bool IsEnabled { get; set; }
//获取或设置由拼写检查器使用的拼写修订规则。
public System.Windows.Controls.SpellingReform SpellingReform { get; set; }
//获取词典文件位置的集合,这些词典文件用于指定的文本编辑控件上的自定义拼写检查器。
public static System.Collections.IList GetCustomDictionaries(System.Windows.Controls.Primitives.TextBoxBase textBoxBase);
//返回一个值,该值指示是否对指定的文本编辑控件启用拼写检查器。
public static bool GetIsEnabled(System.Windows.Controls.Primitives.TextBoxBase textBoxBase);
//启用或禁用指定的文本编辑控件(如 TextBox 或 RichTextBox)上的拼写检查。
public static void SetIsEnabled(System.Windows.Controls.Primitives.TextBoxBase textBoxBase, bool value);
//确定拼写检查器使用的拼写改革规则。
public static void SetSpellingReform(System.Windows.Controls.Primitives.TextBoxBase textBoxBase, System.Windows.Controls.SpellingReform value);
}
2.9.9 SoundPlayerAction
表示用于播放 .wav 文件的轻量音频播放 TriggerAction。
public class SoundPlayerAction : TriggerAction, IDisposable
{
public static readonly System.Windows.DependencyProperty SourceProperty;
//获取或设置音频源位置。
public Uri Source { get; set; }
//释放 SoundPlayerAction 类使用的资源。
public void Dispose();
}
2.9.10 Validation
提供支持数据验证的方法和附加属性。
有关验证过程的详细讨论,请参阅 数据绑定概述中的 "数据验证"。
public static class Validation
{
public static readonly System.Windows.RoutedEvent ErrorEvent;
public static readonly System.Windows.DependencyProperty ErrorsProperty;
public static readonly System.Windows.DependencyProperty ErrorTemplateProperty;
public static readonly System.Windows.DependencyProperty HasErrorProperty;
public static readonly System.Windows.DependencyProperty ValidationAdornerSiteForProperty;
public static readonly System.Windows.DependencyProperty ValidationAdornerSiteProperty;
//向指定对象添加 Error 附加事件的事件处理程序。
public static void AddErrorHandler(System.Windows.DependencyObject element, EventHandler<System.Windows.Controls.ValidationErrorEventArgs> handler);
//从指定的 ValidationError 对象中移除所有 BindingExpressionBase 对象。
public static void ClearInvalid(System.Windows.Data.BindingExpressionBase bindingExpression);
//获取指定元素的 Errors 附加属性的值。
public static System.Collections.ObjectModel.ReadOnlyObservableCollection<System.Windows.Controls.ValidationError> GetErrors(System.Windows.DependencyObject element);
//获取指定元素的 ErrorTemplate 附加属性的值。
public static System.Windows.Controls.ControlTemplate GetErrorTemplate(System.Windows.DependencyObject element);
//获取指定元素的 HasError 附加属性的值。
public static bool GetHasError(System.Windows.DependencyObject element);
//获取指定元素的 ValidationAdornerSite 附加属性值。
public static System.Windows.DependencyObject GetValidationAdornerSite(System.Windows.DependencyObject element);
//获取指定元素的 ValidationAdornerSiteFor 附加属性值。
public static System.Windows.DependencyObject GetValidationAdornerSiteFor(System.Windows.DependencyObject element);
//使用指定 ValidationError 对象将指定 BindingExpression 对象标记为无效。
public static void MarkInvalid(System.Windows.Data.BindingExpressionBase bindingExpression, System.Windows.Controls.ValidationError validationError);
//从指定对象添加 Error 附加事件的事件处理程序。
public static void RemoveErrorHandler(System.Windows.DependencyObject element, EventHandler<System.Windows.Controls.ValidationErrorEventArgs> handler);
//将 ErrorTemplate 附加属性的值设置为指定的元素。
public static void SetErrorTemplate(System.Windows.DependencyObject element, System.Windows.Controls.ControlTemplate value);
//将 ValidationAdornerSite 附加属性设置为指定元素上的指定值。
public static void SetValidationAdornerSite(System.Windows.DependencyObject element, System.Windows.DependencyObject value);
//将 ValidationAdornerSiteFor 附加属性设置为指定元素上的指定值。
public static void SetValidationAdornerSiteFor(System.Windows.DependencyObject element, System.Windows.DependencyObject value);
}
2.9.11 ValidationResult
表示从 ValidationRule.Validate(Object, CultureInfo) 返回的结果 方法指示选中值是否通过 ValidationRule。
利用 WPF 数据绑定模型,您可以 ValidationRules 与 Binding 或对象关联 MultiBinding 。 可以通过为类创建子类 ValidationRule 并实现方法来创建自定义规则 Validate 。 Validate方法返回一个 ValidationResult 对象,用于报告选中值是否有效。
有关验证过程的详细讨论,请参阅 数据绑定概述中的 "数据验证"
public class ValidationResult
{
//获取提供有关无效性的附加信息的对象。
public object ErrorContent { get; }
//获取一个值,该值指示根据 ValidationRule,选中值是否有效。
public bool IsValid { get; }
//获取 ValidationResult 的有效实例。
public static System.Windows.Controls.ValidationResult ValidResult { get; }
//将指定实例与当前的 ValidationResult 实例比较值是否相等。
public override bool Equals(object obj);
//返回此 ValidationResult 的哈希代码。
public override int GetHashCode();
//比较两个 ValidationResult 对象的值是否相等。
public static bool operator ==(System.Windows.Controls.ValidationResult left, System.Windows.Controls.ValidationResult right);
//比较两个 ValidationResult 对象的值是否相等。
public static bool operator !=(System.Windows.Controls.ValidationResult left, System.Windows.Controls.ValidationResult right);
}
2.9.12 ValidationRule
提供创建自定义规则的一个方式,旨在检查用户输入的有效性。
使用 WPF 数据绑定模型时,可以将 ValidationRules 与绑定对象相关联。 若要创建自定义规则,请创建此类的子类并实现 Validate 方法。 (可选)使用内置的 ExceptionValidationRule ,它捕获在源更新过程中引发的异常,或使用来 DataErrorValidationRule 检查由源对象的实现所引发的错误 IDataErrorInfo 。
绑定引擎 ValidationRule 每次将输入值(绑定目标属性值)传输到绑定源属性时,都会检查每个与绑定关联的。
有关数据验证的详细信息,请参阅 数据绑定概述。
有关如何在对话框中验证用户提供的数据的信息,请参阅 对话框概述。
public abstract class ValidationRule
{
//获取或设置一个值,该值指示当 Binding 的目标更新时是否运行验证规则。
public bool ValidatesOnTargetUpdated { get; set; }
//获取或设置验证规则的运行时间。
public System.Windows.Controls.ValidationStep ValidationStep { get; set; }
//对值执行验证检查。
public abstract System.Windows.Controls.ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo);
public virtual System.Windows.Controls.ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo, System.Windows.Data.BindingExpressionBase owner);
public virtual System.Windows.Controls.ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo, System.Windows.Data.BindingGroup owner);
}
2.9.13 ViewBase
表示定义 ListView 控件中数据外观的视图的基类。
GridView视图模式派生自 ViewBase 类。 通常,使用 GridView 带有控件的 ListView 来布局列中的数据。 你还可以使用 ViewBase 类创建的自定义视图模式 ListView 。
public abstract class ViewBase : DependencyObject
{
//获取与视图模式的样式关联的对象。
protected internal virtual object DefaultStyleKey { get; }
//获取用于视图模式中各项的样式。
protected internal virtual object ItemContainerDefaultStyleKey { get; }
//移除为某个项设置的所有绑定和样式。
protected internal virtual void ClearItem(System.Windows.Controls.ListViewItem item);
//当 ListView 控件为其 ListViewAutomationPeer 创建 View 时调用。
protected internal virtual System.Windows.Automation.Peers.IViewAutomationPeer GetAutomationPeer(System.Windows.Controls.ListView parent);
//通过设置绑定和样式,准备视图中要显示的项。
protected internal virtual void PrepareItem(System.Windows.Controls.ListViewItem item);
}
参考微软MSDN