WPF基础四:UI的相关类 (9)Object的派生类

目录

2.9 一些Object的派生类

2.9.1 ColumnDefinitionCollection

2.9.2 ExceptionValidationRule

2.9.3 InkPresenter

2.9.4 ItemCollection

2.9.5 NotifyDataErrorValidationRule

2.9.6 PrintDialog

2.9.7 RowDefinitionCollection

2.9.8 SpellCheck

2.9.9 SoundPlayerAction

2.9.10 Validation

2.9.11 ValidationResult

2.9.12 ValidationRule

2.9.13 ViewBase


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 ,因此提供了集合视图功能,如排序、分组和筛选。 有关详细信息,请参阅SortDescriptionsFilterGroupDescriptions

有关集合视图的详细信息,请参阅 数据绑定概述

    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 提供英语、法语、德语和西班牙语的字典。

带有拼写-检查的 Textbox

若要添加自定义字典,请将词典文件的位置添加到 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 。

View属性定义控件使用的视图模式 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值