WPF基础四:UI的相关类 (3)ContentControl类

目录

2.3) 内容控件

2.3.1) ContentControl

2.3.2) ButtonBase

2.3.3) Button

2.3.4) ToggleButton

2.3.5) CheckBox

2.3.6) ComboBoxItem

2.3.7) Frame 

2.3.8) GridViewColumnHeader

2.3.9) GroupItem

2.3.10) Label

2.3.11) ListBoxItem

2.3.12) ListViewItem 

2.3.13) NavigationWindow

2.3.14) PasswordBox

2.3.15) RadioButton

2.3.16) RepeatButton

2.3.17) StatusBarItem

2.3.18) ScrollViewer

2.3.19) ToolTip

2.3.20) UserControl

2.3.21) Window


2.3) 内容控件

派生自ContentControl,只能由单一元素充当内容。


2.3.1) ContentControl

表示包含一段任意类型内容的控件。

ContentControl可以包含任何类型的公共语言运行时对象 (例如string串或 DateTime 对象) 或 UIElement 对象 (如 Rectangle 或 Panel) 。 这使你能够向控件(例如ButtonCheckBox)添加丰富的内容   。

ContentControl具有有限的默认样式。 如果要增强控件的外观,可以创建新的 DataTemplate 。 有关详细信息,请参阅 数据模板化概述。 另一种典型方案是使用 ContentControl 来显示有关控件中选定项的详细信息 ItemsControl 。 有关详细信息,请参阅 如何:绑定到集合并基于选择显示信息

此控件的依赖属性可能由控件的默认样式设置。 如果按默认样式设置属性,则当控件出现在应用程序中时,属性可能会更改为默认值。 默认样式取决于应用程序运行时使用的桌面主题。 有关详细信息,请参阅 默认的 WPF 主题

    public class ContentControl : Control, IAddChild
    {
        public static readonly System.Windows.DependencyProperty ContentProperty;
        public static readonly System.Windows.DependencyProperty ContentStringFormatProperty;
        public static readonly System.Windows.DependencyProperty ContentTemplateProperty;
        public static readonly System.Windows.DependencyProperty ContentTemplateSelectorProperty;
        public static readonly System.Windows.DependencyProperty HasContentProperty;

        //获取或设置 ContentControl 的内容。
        public object Content { get; set; }

        //获取或设置一个撰写字符串,该字符串指定如果 Content 属性显示为字符串,应如何设置该属性的格式。
        public string ContentStringFormat { get; set; }

        //获取或设置用于显示 ContentControl 内容的数据模板。
        public System.Windows.DataTemplate ContentTemplate { get; set; }

        //获取或设置一个模板选择器,以使应用程序编写器能够提供自定义模板选择逻辑。
        public System.Windows.Controls.DataTemplateSelector ContentTemplateSelector { get; set; }

        //获取一个值,该值指示 ContentControl 是否包含内容。
        public bool HasContent { get; }

        //获取内容控件的逻辑子元素的枚举数。
        protected internal override System.Collections.IEnumerator LogicalChildren { get; }

        //将指定对象作为 ContentControl 的子级添加
        protected virtual void AddChild(object value);

        //将指定文本字符串添加到 ContentControl 中。
        protected virtual void AddText(string text);

        //当 Content 属性更改时调用。
        protected virtual void OnContentChanged(object oldContent, object newContent);

        //当 ContentStringFormat 属性更改时发生。
        protected virtual void OnContentStringFormatChanged(string oldContentStringFormat, string newContentStringFormat);

        //当 ContentTemplate 属性更改时调用。
        protected virtual void OnContentTemplateChanged(System.Windows.DataTemplate oldContentTemplate, System.Windows.DataTemplate newContentTemplate);

        //当 ContentTemplateSelector 属性更改时调用。
        protected virtual void OnContentTemplateSelectorChanged(System.Windows.Controls.DataTemplateSelector oldContentTemplateSelector, System.Windows.Controls.DataTemplateSelector newContentTemplateSelector);

        //指示是否应使 Content 属性持久化。
        public virtual bool ShouldSerializeContent();

        //此类型或成员支持 Windows Presentation Foundation (WPF) 基础结构,并且不应在代码中直接使用。
        void IAddChild.AddChild(object value);

        //此类型或成员支持 Windows Presentation Foundation (WPF) 基础结构,并且不应在代码中直接使用。
        void IAddChild.AddText(string text);
    }

2.3.2) ButtonBase

表示所有 Button 控件的基类。

 Click 处理在用户单击时响应 ButtonBase 的事件。 用户可以通过使用 AccessText 或在控件具有焦点时按 enter 键或空格键来引发 Click 事件。 当用户按空格键时,控件将设置 IsPressed 为 true 并捕获鼠标。 因此,控件将引发鼠标事件,例如 MouseEnter 和 IsMouseDirectlyOverChanged 。 请注意,使用 AccessText 或 ENTER 不会更改 IsPressed 或捕获鼠标,但会引发 Click 事件。

将 ButtonBase AcceptsReturn 附加属性设置为 true 。

ButtonBase 将 IsInputMethodEnabled 属性设置为 false

ButtonBase是 ContentControl ,这意味着它可以包含任何类型的单个对象 (例如字符串、图像或面板) 。 有关更多信息,请参见 ContentControl 类。

    public abstract class ButtonBase : ContentControl, ICommandSource
    {
        public static readonly System.Windows.RoutedEvent ClickEvent;
        public static readonly System.Windows.DependencyProperty ClickModeProperty;
        public static readonly System.Windows.DependencyProperty CommandParameterProperty;
        public static readonly System.Windows.DependencyProperty CommandProperty;
        public static readonly System.Windows.DependencyProperty CommandTargetProperty;
        public static readonly System.Windows.DependencyProperty IsPressedProperty;

        //获取或设置 Click 事件何时发生。
        public System.Windows.Controls.ClickMode ClickMode { get; set; }

        //获取或设置在按下按钮时调用的命令。
        public System.Windows.Input.ICommand Command { get; set; }

        //获取或设置要传递给 Command 属性的参数。
        public object CommandParameter { get; set; }

        //获取或设置要引发指定命令的元素。
        public System.Windows.IInputElement CommandTarget { get; set; }

        //获取 IsEnabled 属性的值。
        protected override bool IsEnabledCore { get; }

        //获取一个值,该值指示 ButtonBase 当前是否已被激活。
        public bool IsPressed { get; protected set; }

        //在调用此控件的 AccessKey 时响应。
        protected override void OnAccessKey(System.Windows.Input.AccessKeyEventArgs e);

        //引发 Click 路由事件。
        protected virtual void OnClick();

        //当 IsPressed 属性更改时调用。
        protected virtual void OnIsPressedChanged(System.Windows.DependencyPropertyChangedEventArgs e);

        //为在此控件有焦点的情况下用户按任意键时发生的 KeyDown 路由事件提供类处理。
        protected override void OnKeyDown(System.Windows.Input.KeyEventArgs e);

        //为在此控件有焦点的情况下用户释放任意键时发生的 KeyUp 路由事件提供类处理。
        protected override void OnKeyUp(System.Windows.Input.KeyEventArgs e);

        //在元素失去键盘焦点时调用。
        protected override void OnLostKeyboardFocus(System.Windows.Input.KeyboardFocusChangedEventArgs e);

        //提供路由事件 LostMouseCapture 的类处理,该事件在此控件不再接收鼠标事件消息时发生。
        protected override void OnLostMouseCapture(System.Windows.Input.MouseEventArgs e);

        //为当鼠标进入此控件时发生的 ClickMode 路由事件提供类处理。
        protected override void OnMouseEnter(System.Windows.Input.MouseEventArgs e);

        //为当鼠标离开元素时发生的 MouseLeave 路由事件提供类处理。
        protected override void OnMouseLeave(System.Windows.Input.MouseEventArgs e);

        //为鼠标指针位于此控件上并按下鼠标左键时发生的 MouseLeftButtonDown 路由事件提供类处理。
        protected override void OnMouseLeftButtonDown(System.Windows.Input.MouseButtonEventArgs e);

        //为鼠标指针位于此控件上并释放鼠标左键时发生的 MouseLeftButtonUp 路由事件提供类处理。
        protected override void OnMouseLeftButtonUp(System.Windows.Input.MouseButtonEventArgs e);

        //提供当鼠标指针位于此元素上并且移动鼠标指针发生的MouseMove 路由事件的类处理。
        protected override void OnMouseMove(System.Windows.Input.MouseEventArgs e);

        //当控件的呈现大小更改时调用。
        protected internal override void OnRenderSizeChanged(System.Windows.SizeChangedInfo sizeInfo);

        //在单击 Button 时发生。
        public event System.Windows.RoutedEventHandler Click;
    }

2.3.3) Button

表示 Windows 按钮控件,该按钮对 Click 事件做出反应。

Button类直接从 System.Windows.Controls.Primitives.ButtonBase 类继承。

内容模型: Button 派生自 ContentControl 。 它的内容属性为 Content 。

 ButtonBase.Click 处理在用户单击时响应Button 的事件 。

OnMouseLeftButtonDown方法将 MouseLeftButtonDown 事件标记为已处理。 若要响应 MouseLeftButtonDown 事件,请将事件处理程序附加到 PreviewMouseLeftButtonDown 事件,或将 AddHandler(RoutedEvent, Delegate, Boolean) handledEventsToo 设置为时调用 true 。

若要对多个控件应用相同的属性设置 Button ,请使用 Style 属性。 您可以修改 ControlTemplate 默认值,为控件指定独特的外观。 有关创 ControlTemplate 建的详细信息,请参阅 通过创建 System.windows.controls.controltemplate> 自定义现有控件的外观。 若要查看特定于的部分和状态,请 Button 参阅 按钮样式和模板

此控件的依赖属性可能由控件的默认样式设置。 如果按默认样式设置属性,则当控件出现在应用程序中时,属性可能会更改为默认值。 默认样式取决于应用程序运行时使用的桌面主题。 有关详细信息,请参阅 默认的 WPF 主题

只有视觉对象属性已存在于控件的默认模板中并且已使用 TemplateBinding 设置时,设置该属性才有效。 在通过创建 ControlTemplate 自定义现有控件的外观一文的更改控件的视觉结构部分可以找到视觉属性列表。

    public class Button : ButtonBase
    {
        public static readonly System.Windows.DependencyProperty IsCancelProperty;
        public static readonly System.Windows.DependencyProperty IsDefaultedProperty;
        public static readonly System.Windows.DependencyProperty IsDefaultProperty;

        //获取或设置一个值,该值指示 Button 是否是一个“取消”按钮。 用户可以通过按 ESC 键来激活 Cancel 按钮。
        public bool IsCancel { get; set; }

        //获取或设置一个值,该值指示 Button 是否是一个默认按钮。 用户可以通过按 ENTER 键调用默认按钮。
        public bool IsDefault { get; set; }

        //获取或设置一个值,该值指示 Button 是否是在用户按下 ENTER 键时所激活的按钮。
        public bool IsDefaulted { get; }

        //单击 Button 时调用。
        protected override void OnClick();

        //ButtonAutomationPeer为此控件创建一个适用于 WPF 基础结构的一部分。
        protected override System.Windows.Automation.Peers.AutomationPeer OnCreateAutomationPeer();       
    }

2.3.4) ToggleButton

可切换状态的控件基类,例如 CheckBox

ToggleButton是 ContentControl ,这意味着它可以包含任何类型的单个对象 (例如字符串、图像或面板) 。 有关更多信息,请参见 ContentControl 类。

IsChecked属性指定 ToggleButton 的状态。 IsThreeState属性指定 ToggleButton 是否有两种或三种状态。

若要对多个 ToggleButton 控件应用相同的属性设置,请使用 Style 属性。 您可以修改 ControlTemplate 默认值,为控件指定独特的外观。 有关创建 ControlTemplate 的详细信息,请参阅 通过创建 System.windows.controls.controltemplate> 自定义现有控件的外观。 若要查看特定于 ToggleButton 的部分和状态,请参阅 切换按钮样式和模板

此控件的依赖属性可能由控件的默认样式设置。 如果按默认样式设置属性,则当控件出现在应用程序中时,属性可能会更改为默认值。 默认样式取决于应用程序运行时使用的桌面主题。 有关详细信息,请参阅 默认的 WPF 主题

只有视觉对象属性已存在于控件的默认模板中并且已使用 TemplateBinding 设置时,设置该属性才有效。 在通过创建 ControlTemplate 自定义现有控件的外观一文的更改控件的视觉结构部分可以找到视觉属性列表。

    public class ToggleButton : ButtonBase
    {
        public static readonly System.Windows.RoutedEvent CheckedEvent;
        public static readonly System.Windows.RoutedEvent IndeterminateEvent;
        public static readonly System.Windows.DependencyProperty IsCheckedProperty;
        public static readonly System.Windows.DependencyProperty IsThreeStateProperty;
        public static readonly System.Windows.RoutedEvent UncheckedEvent;

        //获取或设置是否选中 ToggleButton。
        public bool? IsChecked { get; set; }

        //决定控件是支持两种状态还是支持三种状态。
        public bool IsThreeState { get; set; }

        //当 ToggleButton 引发 Checked 事件时调用。
        protected virtual void OnChecked(System.Windows.RoutedEventArgs e);

        //当用鼠标或键盘单击控件时调用。
        protected override void OnClick();

        //提供 ToggleButtonAutomationPeer 此控件的适当实现,作为 WPF 基础结构的一部分。
        protected override System.Windows.Automation.Peers.AutomationPeer OnCreateAutomationPeer();

        //当 ToggleButton 引发 Indeterminate 事件时调用。
        protected virtual void OnIndeterminate(System.Windows.RoutedEventArgs e);

        //由 OnClick() 方法调用以实现切换行为。
        protected internal virtual void OnToggle();

        //当 ToggleButton 引发 Unchecked 事件时调用。
        protected virtual void OnUnchecked(System.Windows.RoutedEventArgs e);

        //返回 ToggleButton 对象的字符串表示形式。
        public override string ToString();

        //在选中 ToggleButton 时发生。
        public event System.Windows.RoutedEventHandler Checked;

        //在 ToggleButton 的状态既不是开也不是关时发生。
        public event System.Windows.RoutedEventHandler Indeterminate;

        //在未选中 ToggleButton 时发生。
        public event System.Windows.RoutedEventHandler Unchecked;

    }

2.3.5) CheckBox

表示用户可以选择和清除的控件。

CheckBox 控件从 ToggleButton 中继承,并且可以有三种状态:选中 (选中) 、取消选中 (清除) 和不确定。

CheckBox是 ContentControl ,这意味着它可以包含任何类型的单个对象 (例如字符串、图像或面板) 。 有关更多信息,请参见 ContentControl 类。

若要对多个 CheckBox 控件应用相同的属性设置,请使用 Style 属性。 您可以修改 ControlTemplate 默认值,为控件指定独特的外观。 有关创建 ControlTemplate 的详细信息,请参阅 通过创建 System.windows.controls.controltemplate> 自定义现有控件的外观。 若要查看特定于 CheckBox 的部分和状态,请参阅 复选框样式和模板

此控件的依赖属性可能由控件的默认样式设置。 如果按默认样式设置属性,则当控件出现在应用程序中时,属性可能会更改为默认值。 默认样式取决于应用程序运行时使用的桌面主题。 有关详细信息,请参阅 默认的 WPF 主题

只有视觉对象属性已存在于控件的默认模板中并且已使用 TemplateBinding 设置时,设置该属性才有效。 在通过创建 ControlTemplate 自定义现有控件的外观一文的更改控件的视觉结构部分可以找到视觉属性列表。

    public class CheckBox : ToggleButton
    {
        //调用 CheckBox 的访问键时调用。
        protected override void OnAccessKey(System.Windows.Input.AccessKeyEventArgs e);

        //为 CheckBox 创建一个 AutomationPeer。
        protected override System.Windows.Automation.Peers.AutomationPeer OnCreateAutomationPeer();

        //响应 CheckBoxKeyDown 事件。
        protected override void OnKeyDown(System.Windows.Input.KeyEventArgs e);
    }

2.3.6) ComboBoxItem

在 ComboBox 内实现可选择的项。

默认情况下,ComboBoxItem 的 HorizontalAlignment设置为 Stretch 。  StackPanel 的默认水平位置是 Center 。 如果你通过StackPanel设置ComboBoxItem的 Width 属性,则会应用StackPanel的默认值,将项目居中。

ComboBoxItem是 ContentControl ,这意味着它可以包含任何类型的单个对象 (例如字符串、图像或面板) 。 有关更多信息,请参见 ContentControl 类。

若要对多个 ComboBoxItem 控件应用相同的属性设置,请使用 Style 属性。 您可以修改 ControlTemplate 默认值,为控件指定独特的外观。 有关创建 ControlTemplate 的详细信息,请参阅 通过创建 System.windows.controls.controltemplate> 自定义现有控件的外观。 若要查看特定于 ComboBoxItem 的部分和状态,请参阅 ComboBox 样式和模板

此控件的依赖属性可能由控件的默认样式设置。 如果按默认样式设置属性,则当控件出现在应用程序中时,属性可能会更改为默认值。 默认样式取决于应用程序运行时使用的桌面主题。 有关详细信息,请参阅 默认的 WPF 主题

只有视觉对象属性已存在于控件的默认模板中并且已使用 TemplateBinding 设置时,设置该属性才有效。 在通过创建 ControlTemplate 自定义现有控件的外观一文的更改控件的视觉结构部分可以找到视觉属性列表。

    public class ComboBoxItem : ListBoxItem
    {
        public static readonly System.Windows.DependencyProperty IsHighlightedProperty;

        //获取一个指示是否突出显示该项的值。
        public bool IsHighlighted { get; protected set; }

        //当 Content 属性更改时调用。
        protected override void OnContentChanged(object oldContent, object newContent);

        //宣布键盘焦点位于此元素上。
        protected override void OnGotKeyboardFocus(System.Windows.Input.KeyboardFocusChangedEventArgs e);

        //响应 MouseEnter 事件。
        protected override void OnMouseEnter(System.Windows.Input.MouseEventArgs e);

        //响应 MouseLeftButtonDown 事件。
        protected override void OnMouseLeftButtonDown(System.Windows.Input.MouseButtonEventArgs e);

        //响应 MouseLeftButtonUp 事件。
        protected override void OnMouseLeftButtonUp(System.Windows.Input.MouseButtonEventArgs e);
    }

2.3.7) Frame 

框架是一种支持导航的内容控件。

Frame 提供导航到和显示内容的功能的内容控件。 Frame 与其他控件和元素一样,可在其他内容中托管。

当 Frame 控件导航到 HTML 内容时, Frame 控件在内部实例化本机 WebBrowser ActiveX 控件。 WPF 通过将功能控件应用于 WebBrowser ActiveX 控件来启用安全功能。 应用的功能控件在 Xbap 和独立应用程序方面有所不同。 某些应用程序应该应用其他功能控制,以防止恶意内容运行。 有关详细信息,请参阅 Security (WPF) 和 WebBrowser 控件概述和教程中的 "WebBrowser 控件和功能控件" 一节。

内容可以是任何类型的 .NET Framework 对象和 HTML 文件。 但一般情况下,页面是打包内容以进行导航的首选方式 (参阅 Page) 。

可以通过将属性设置为 Source 所需内容的 URI 来导航至内容。 此外,还可以使用方法的以下重载之一导航到内容 Navigate :

当内容通过 URI 导航到时,将 Frame 返回包含内容的对象。 或者,可以通过使用接受对象的方法重载之一来导航到内容 Navigate :

导航的生存期可通过以下事件进行跟踪:

并非每次发生导航时都会引发所有事件;引发的事件集由 (内容或内容片段) 的导航类型确定,以及导航如何完成 (取消、停止或失败) 。

下图说明了这些事件将激发的顺序:

页面导航流程图

在导航过程中或导航后, Frame 提供有关要导航到的内容的信息,包括要导航到的内容的 uri (Source) 、当前内容 () 的 uri CurrentSource 以及包含导航到 () 的内容的对象 Content 。

导航到内容时,会 Frame 将导航记录为导航历史记录中的条目。 当出现新的导航时,通过调用 Navigate 方法或通过在前进导航历史记录中通过调用导航到某个条目来向后导航历史记录中添加一个条目 GoForward 。 通过在后退导航历史记录中通过调用来向后导航历史记录中添加一个条目 GoBack 。 CanGoBack 和 CanGoForward 报告后退和前进导航历史记录中是否存在条目。

第一次从另一段内容导航到一个内容时,将 Frame 自动显示允许用户在导航历史记录中向后和向前导航的导航用户界面。 可以通过设置属性来配置显示导航 UI 的时间 NavigationUIVisibility 。

默认情况下, Frame 仅当父导航器 (时 NavigationWindow , Frame 找不到具有其自己的导航历史记录的) 的导航历史记录。 这意味着,框架的导航历史记录项与父导航器的导航历史记录项从不。 若要指定 Frame 管理自己的导航历史记录,请将 JournalOwnership 属性设置为 OwnsJournal 。

后退导航历史记录中的最新条目可通过调用删除 RemoveBackEntry 。

Frame 不会在导航历史记录中存储内容对象的实例。 相反, Frame 每次使用导航历史记录导航到内容对象时,都将创建该对象的新实例。 此行为旨在避免在将大量内容导航到时消耗过多的内存。 因此,不会从一个导航到下一个导航来记住内容的状态。 不过,WPF 提供了多种方法,你可以通过这些方法在导航历史记录中存储部分内容的状态。

使用 AddBackEntry ,还可以记住单个页面实例的多个状态集。

若要对多个控件应用相同的属性设置 Frame ,请使用 Style 属性。 您可以修改默认值 ControlTemplate ,为控件指定独特的外观。 有关创建的详细信息 ControlTemplate ,请参阅 通过创建 System.windows.controls.controltemplate> 自定义现有控件的外观。 若要查看特定于的部分和状态,请 Frame 参阅 框架样式和模板

此控件的依赖属性可能由控件的默认样式设置。 如果按默认样式设置属性,则当控件出现在应用程序中时,属性可能会更改为默认值。 默认样式取决于应用程序运行时使用的桌面主题。 有关详细信息,请参阅 默认的 WPF 主题

只有视觉对象属性已存在于控件的默认模板中并且已使用 TemplateBinding 设置时,设置该属性才有效。 在通过创建 ControlTemplate 自定义现有控件的外观一文的更改控件的视觉结构部分可以找到视觉属性列表。

    public class Frame : ContentControl, INavigator, INavigatorBase, INavigatorImpl, IJournalNavigationScopeHost, IDownloader, IJournalState, IAddChild, IUriContext
    {
        public static readonly System.Windows.DependencyProperty BackStackProperty;
        public static readonly System.Windows.DependencyProperty CanGoBackProperty;
        public static readonly System.Windows.DependencyProperty CanGoForwardProperty;
        public static readonly System.Windows.DependencyProperty ForwardStackProperty;
        public static readonly System.Windows.DependencyProperty JournalOwnershipProperty;
        public static readonly System.Windows.DependencyProperty NavigationUIVisibilityProperty;
        public static readonly System.Windows.DependencyProperty SandboxExternalContentProperty;
        public static readonly System.Windows.DependencyProperty SourceProperty;

        //返回一个 IEnumerable,用于枚举 Frame 的后退导航历史记录中的条目。
        public System.Collections.IEnumerable BackStack { get; }

        //获取或设置 Frame 的基本统一资源标识符 (URI)。
        protected virtual Uri BaseUri { get; set; }

        //获取一个值,该值指示后退导航历史记录中是否至少有一个条目。
        public bool CanGoBack { get; }

        //获取一个值,该值指示前进导航历史记录中是否至少有一个条目。
        public bool CanGoForward { get; }

        //获取上次导航到的内容的统一资源标识符 (URI)。
        public Uri CurrentSource { get; }

        //获取一个 IEnumerable,用于枚举 Frame 的前进导航历史记录中的条目。
        public System.Collections.IEnumerable ForwardStack { get; }

        //获取或设置 Frame 是负责管理自己的导航历史记录,还是将导航历史记录的管理工作交给父导航器 (NavigationWindow、Frame) 负责。
        public System.Windows.Navigation.JournalOwnership JournalOwnership { get; set; }

        //获取此 NavigationService 用来提供导航服务的 Frame。
        public System.Windows.Navigation.NavigationService NavigationService { get; }

        //获取或设置 Frame 何时可以显示其导航 UI。
        public System.Windows.Navigation.NavigationUIVisibility NavigationUIVisibility { get; set; }

        //获取或设置是否将 Frame 外部 Extensible Application Markup Language 与默认权限集) 在部分信任的安全沙盒 (内隔离 (XAML) 内容 Internet 。
        public bool SandboxExternalContent { get; set; }

        //获取或设置当前内容的统一资源标识符 (URI),或当前正在导航到的新内容的 URI。
        public Uri Source { get; set; }

        //向包含 CustomContentState 对象的后退导航历史记录中添加一个条目。
        public void AddBackEntry(System.Windows.Navigation.CustomContentState state);

        //添加子对象。
        protected override void AddChild(object value);

        //将节点的文本内容添加到对象。
        protected override void AddText(string text);

        //如果 Frame 管理自己的导航历史记录,则导航到后退导航历史记录中最近的项。
        public void GoBack();

        //如果 Frame 管理自己的导航历史记录,则导航到前进导航历史记录中最近的项。
        public void GoForward();

        //异步导航到指定的源内容。
        public bool Navigate(Uri source, object extraData);
        public bool Navigate(object content, object extraData);
        public bool Navigate(Uri source);
        public bool Navigate(object content);

        //在为可视化树创建模板生成时调用。
        public override void OnApplyTemplate();

        //引发 ContentRendered 事件。
        protected virtual void OnContentRendered(EventArgs args);

        //为此 NavigationWindowAutomationPeer 创建并返回一个 Frame 对象。
        protected override System.Windows.Automation.Peers.AutomationPeer OnCreateAutomationPeer();

        //重新加载当前内容。
        public void Refresh();

        //移除后退历史记录中的最新日记条目。
        public System.Windows.Navigation.JournalEntry RemoveBackEntry();

        //允许派生类确定 Content 属性的序列化行为。
        public override bool ShouldSerializeContent();

        //停止为当前导航请求下载更多内容。
        public void StopLoading();

        //在呈现了 Frame 内容之后发生。
        public event EventHandler ContentRendered;

        //在开始导航到内容片段时发生,如果所需片段位于当前内容中,则为; 如果所需片段位于不同内容中,则在加载源 XAML 内容后发生。
        public event System.Windows.Navigation.FragmentNavigationEventHandler FragmentNavigation;

        //当已加载、分析并开始呈现目标导航内容时发生。
        public event System.Windows.Navigation.LoadCompletedEventHandler LoadCompleted;

        //找到导航的目标内容且可通过 Content 属性得到这些内容时发生,即使尚未加载完毕也是如此。
        public event System.Windows.Navigation.NavigatedEventHandler Navigated;

        //请求新导航时发生。
        public event System.Windows.Navigation.NavigatingCancelEventHandler Navigating;

        //在导航到所需内容的同时遇到错误时发生。
        public event System.Windows.Navigation.NavigationFailedEventHandler NavigationFailed;

        //在下载过程中定期发生,用于提供定位进度信息。
        public event System.Windows.Navigation.NavigationProgressEventHandler NavigationProgress;

        //在调用 StopLoading() 方法时发生,或者在当前导航正处于进行过程中时又请求一个新导航时发生。
        public event System.Windows.Navigation.NavigationStoppedEventHandler NavigationStopped;

        //有关此成员的说明,请参见 BaseUri。
        Uri System.Windows.Markup.IUriContext.BaseUri { get; set; }       
    }

2.3.8) GridViewColumnHeader

表示 GridViewColumn 的列标题。

GridViewColumnHeader对象是派生自ButtonBase的按钮控件  。 GridViewColumnHeader 属性跟踪鼠标事件和调整列的大小。

GridView视图模式下的列标题是 GridViewColumnHeader 对象。

您可以 使用GridViewColumnHeader 在此类和相关类中找到的各种属性自定义对象。 有关这些属性以及这些属性之间优先级的详细信息,请参阅 GridView 列标题样式和模板概述

GridViewColumnHeader是 ContentControl ,这意味着它可以包含任何类型的单个对象 (例如字符串、图像或面板) 。 有关更多信息,请参见 ContentControl 类。

    public class GridViewColumnHeader : ButtonBase
    {
        public static readonly System.Windows.DependencyProperty ColumnProperty;
        public static readonly System.Windows.DependencyProperty RoleProperty;

        //获取与 GridViewColumn 关联的 GridViewColumnHeader。
        public System.Windows.Controls.GridViewColumn Column { get; }

        //获取 GridViewColumnHeader 的角色。
        public System.Windows.Controls.GridViewColumnHeaderRole Role { get; }

        //当按下 GridViewColumnHeader 的 AccessKey 时响应。
        protected override void OnAccessKey(System.Windows.Input.AccessKeyEventArgs e);

        //响应 GridViewColumnHeader 的可视化树的创建。
        public override void OnApplyTemplate();

        //为 Click 的 GridViewColumnHeader 事件提供类处理。
        protected override void OnClick();

        //为 AutomationPeer 提供 GridViewColumnHeader 实现。
        protected override System.Windows.Automation.Peers.AutomationPeer OnCreateAutomationPeer();

        //为 LostKeyboardFocus 的 GridViewColumnHeader 事件提供类处理。
        protected override void OnLostKeyboardFocus(System.Windows.Input.KeyboardFocusChangedEventArgs e);

        //为用户将鼠标指针暂停在 MouseEnter 上时发生的 GridViewColumnHeader 事件提供类处理。
        protected override void OnMouseEnter(System.Windows.Input.MouseEventArgs e);

        //为鼠标从 MouseLeave 上移开时发生的 GridViewColumnHeader 事件提供类处理。
        protected override void OnMouseLeave(System.Windows.Input.MouseEventArgs e);

        //为用户在将鼠标指针暂停在 MouseLeftButtonDown 上的同时按下鼠标左键时发生的 GridViewColumnHeader 事件提供类处理。
        protected override void OnMouseLeftButtonDown(System.Windows.Input.MouseButtonEventArgs e);

        //为用户在将鼠标指针暂停在 MouseLeftButtonUp 上的同时释放鼠标左键时发生的 GridViewColumnHeader 事件提供类处理。
        protected override void OnMouseLeftButtonUp(System.Windows.Input.MouseButtonEventArgs e);

        //为用户在 MouseMove 内移动鼠标时发生的 GridViewColumnHeader 事件提供类处理。
        protected override void OnMouseMove(System.Windows.Input.MouseEventArgs e);

        //响应 GridViewColumnHeader 维度的更改。
        protected internal override void OnRenderSizeChanged(System.Windows.SizeChangedInfo sizeInfo);

        //确定是否序列化 DependencyProperty。
        protected internal override bool ShouldSerializeProperty(System.Windows.DependencyProperty dp);
    }

2.3.9) GroupItem

显示为组生成的可视子树的根。

GroupItem是 ContentControl ,这意味着它可以包含任何类型的单个对象 (例如字符串、图像或面板) 。 有关更多信息,请参见 ContentControl 类。

此控件的依赖属性可能由控件的默认样式设置。 如果按默认样式设置属性,则当控件出现在应用程序中时,属性可能会更改为默认值。 默认样式取决于应用程序运行时使用的桌面主题。 有关详细信息,请参阅 默认的 WPF 主题

    public class GroupItem : ContentControl, IHierarchicalVirtualizationAndScrollInfo, IContainItemStorage
    {
        //排列 GroupItem 的内容。
        protected override System.Windows.Size ArrangeOverride(System.Windows.Size arrangeSize);

        //在应用新模板时生成 GroupItem 的可视化树。
        public override void OnApplyTemplate();

        //创建并返回此 AutomationPeer 的 GroupItem 对象。
        protected override System.Windows.Automation.Peers.AutomationPeer OnCreateAutomationPeer();

        //清除所有的属性关联。
        void IContainItemStorage.Clear();

        //删除指定的项目与该元素之间的关联。
        void IContainItemStorage.ClearItemValue(object item, System.Windows.DependencyProperty dp);

        //从所有属性列表中删除指定属性。
        void IContainItemStorage.ClearValue(System.Windows.DependencyProperty dp);

        //返回与指定项相关的指定属性的值。
        object IContainItemStorage.ReadItemValue(object item, System.Windows.DependencyProperty dp);

        //存储指定的属性和值,并将它们与指定的项相关联。
        void IContainItemStorage.StoreItemValue(object item, System.Windows.DependencyProperty dp, object value);

        //获取或设置表示控件视区和缓存的大小的对象。
        System.Windows.Controls.HierarchicalVirtualizationConstraints System.Windows.Controls.Primitives.IHierarchicalVirtualizationAndScrollInfo.Constraints { get; set; }

        //获取表示控件标头所需大小的对象。
        System.Windows.Controls.HierarchicalVirtualizationHeaderDesiredSizes System.Windows.Controls.Primitives.IHierarchicalVirtualizationAndScrollInfo.HeaderDesiredSizes { get; }

        //获取指示控件的布局传递是否出现在较低优先级中的值。
        bool System.Windows.Controls.Primitives.IHierarchicalVirtualizationAndScrollInfo.InBackgroundLayout { get; set; }

        //获取或设置表示控件项的所需大小的对象。
        System.Windows.Controls.HierarchicalVirtualizationItemDesiredSizes System.Windows.Controls.Primitives.IHierarchicalVirtualizationAndScrollInfo.ItemDesiredSizes { get; set; }

        //获取显示控件的项的 Panel。
        System.Windows.Controls.Panel System.Windows.Controls.Primitives.IHierarchicalVirtualizationAndScrollInfo.ItemsHost { get; }

        //获取或设置一个值,该值指示所属 ItemsControl 是否应虚拟化。
        bool System.Windows.Controls.Primitives.IHierarchicalVirtualizationAndScrollInfo.MustDisableVirtualization { get; set; }
    }

2.3.10) Label

表示控件的文本标签,并提供访问密钥支持。

此类提供对访问密钥的功能和视觉支持 (也称为助记键) 。 它经常用于启用对等控件的快速键盘访问 TextBox 。 若要将分配 Label 到 Control ,请将 Target 属性设置为当用户按下访问键时应获得焦点的控件。 设置目标还会导致 Microsoft UI 自动化使用标签文本作为目标控件的名称。 有关详细信息,请参阅 辅助功能

若要设置访问密钥,请在应为访问键的字符前添加一个下划线。 如果内容有多个下划线字符,则只会将第一个下划线字符转换为访问密钥;其他下划线显示为普通文本。 如果要转换为访问键的下划线不是第一个下划线,请在要转换的下划线前面使用两个连续的下划线。 例如,以下代码包含一个访问键,并显示为 _Hello World:

<Label>__Hello_World</Label>   

由于 H 前面的下划线为 double,因此 W key 注册为访问键。

标签不可设定焦点,并且不是制表位。 有关详细信息,请参阅 焦点概述

Label是 ContentControl ,这意味着它可以包含任何类型的单个对象 (例如字符串、图像或面板) 。 有关更多信息,请参见 ContentControl 类。

自定义标签控件

若要对多个控件应用相同的属性设置 Label ,请使用 Style 属性。 您可以修改默认值 ControlTemplate ,为控件指定独特的外观。 有关创建的详细信息 ControlTemplate ,请参阅 通过创建 System.windows.controls.controltemplate> 自定义现有控件的外观。 若要查看特定于的部分和状态 Label ,请参阅 标签样式和模板

此控件的依赖属性可能由控件的默认样式设置。 如果按默认样式设置属性,则当控件出现在应用程序中时,属性可能会更改为默认值。 默认样式取决于应用程序运行时使用的桌面主题。 有关详细信息,请参阅 默认的 WPF 主题

只有视觉对象属性已存在于控件的默认模板中并且已使用 TemplateBinding 设置时,设置该属性才有效。 在通过创建 ControlTemplate 自定义现有控件的外观一文的更改控件的视觉结构部分可以找到视觉属性列表。

    public class Label : ContentControl
    {
        public static readonly System.Windows.DependencyProperty TargetProperty;

        //获取或设置当用户按下标签的访问键时获得焦点的元素
        public System.Windows.UIElement Target { get; set; }

        //提供 LabelAutomationPeer 此控件的适当实现,作为 WPF 基础结构的一部分。
        protected override System.Windows.Automation.Peers.AutomationPeer OnCreateAutomationPeer();
    }

2.3.11) ListBoxItem

表示 ListBox 中的可选项。

ListBox包含对象的集合 ListBoxItem 。 若要选择 ListBoxItem 中的 ListBox ,请将 IsSelected 属性设置为 true 。

通过将 ListBoxItem 的ItemsSource 属性绑定到数据源,将ListBoxItem绑定到数据。 有关详细信息,请参阅 如何:将 ListBox 绑定到数据。 可以 ListBoxItem 通过将的 ItemTemplate 属性设置 ListBox 为来自定义的外观 DataTemplate 。 有关详细信息,请参阅 数据模板化概述

默认情况下, ListBoxItem 的 HorizontalAlignment设置为 Stretch 。 StackPanel  的默认水平位置是 Center 。 如果通过将的属性设置为,则将 Width ListBoxItem StackPanel 应用面板的默认值,并将项目居中。

ListBoxItem是 ContentControl ,这意味着它可以包含任何类型的单个对象 (例如字符串、图像或面板) 。 有关更多信息,请参见 ContentControl 类。

自定义 ListBoxItem 控件

若要对多个控件应用相同的 ListBoxItem属性设置 ,请使用 Style 属性。 您可以修改 ControlTemplate 默认值,为控件指定独特的外观。 有关创建的详细信息 ControlTemplate ,请参阅 通过创建 System.windows.controls.controltemplate> 自定义现有控件的外观。 若要查看特定于 ListBoxItem 的部分和状态,请参阅 ListBox 样式和模板

此控件的依赖属性可能由控件的默认样式设置。 如果按默认样式设置属性,则当控件出现在应用程序中时,属性可能会更改为默认值。 默认样式取决于应用程序运行时使用的桌面主题。 有关详细信息,请参阅 默认的 WPF 主题

只有视觉对象属性已存在于控件的默认模板中并且已使用 TemplateBinding 设置时,设置该属性才有效。 在通过创建 ControlTemplate 自定义现有控件的外观一文的更改控件的视觉结构部分可以找到视觉属性列表。

    public class ListBoxItem : ContentControl
    {
        public static readonly System.Windows.DependencyProperty IsSelectedProperty;
        public static readonly System.Windows.RoutedEvent SelectedEvent;
        public static readonly System.Windows.RoutedEvent UnselectedEvent;

        //获取或设置一个指示是否选择 ListBoxItem 的值。
        public bool IsSelected { get; set; }

        //提供 ListBoxItemAutomationPeer 此控件的适当实现,作为 WPF 自动化基础结构的一部分。
        protected override System.Windows.Automation.Peers.AutomationPeer OnCreateAutomationPeer();

        //在鼠标进入 ListBoxItem 时调用。
        protected override void OnMouseEnter(System.Windows.Input.MouseEventArgs e);

        //在鼠标离开 ListBoxItem 时调用。
        protected override void OnMouseLeave(System.Windows.Input.MouseEventArgs e);

        //当用户在 ListBoxItem 上按鼠标右键时调用。
        protected override void OnMouseLeftButtonDown(System.Windows.Input.MouseButtonEventArgs e);

        //当用户在 ListBoxItem 上按鼠标右键时调用。
        protected override void OnMouseRightButtonDown(System.Windows.Input.MouseButtonEventArgs e);

        //在选定 ListBoxItem 中的 ListBox 时调用。
        protected virtual void OnSelected(System.Windows.RoutedEventArgs e);

        //在取消选择 ListBoxItem 中的 ListBox 时调用。
        protected virtual void OnUnselected(System.Windows.RoutedEventArgs e);

        //在列表框项的可视父级更改时调用。
        protected internal override void OnVisualParentChanged(System.Windows.DependencyObject oldParent);

        //在选择 ListBoxItem 时发生。
        public event System.Windows.RoutedEventHandler Selected;

        //在取消选择 ListBoxItem 时发生。
        public event System.Windows.RoutedEventHandler Unselected;
    }

2.3.12) ListViewItem 

表示 ListView 控件中的一个项。

ListViewItem是 ContentControl ,这意味着它可以包含任何类型的单个对象 (例如字符串、图像或面板) 。 有关更多信息,请参见 ContentControl 类。

ListView通常 通过ListViewItem 设置 ItemsSource 属性或属性来指定其控件的内容 Items 。

为 ListViewItem 类型定义的模板和样式,用于指定在 ListView 中显示内容。

自定义 ListViewItem 控件

若要对多个 ListViewItem 控件应用相同的属性设置,请使用 Style 属性。 您可以修改 ControlTemplate 默认值,为控件指定独特的外观。 有关创建 ControlTemplate 的详细信息,请参阅 通过创建 System.windows.controls.controltemplate> 自定义现有控件的外观。 若要查看特定于 ListViewItem 的部分和状态,请参阅 ListView 样式和模板

此控件的依赖属性可能由控件的默认样式设置。 如果按默认样式设置属性,则当控件出现在应用程序中时,属性可能会更改为默认值。 默认样式取决于应用程序运行时使用的桌面主题。 有关详细信息,请参阅 默认的 WPF 主题

只有视觉对象属性已存在于TemplateBinding 控件的默认模板中并且已使用 设置时,设置该属性才有效。 在通过创建 ControlTemplate 自定义现有控件的外观一文的更改控件的视觉结构部分可以找到视觉属性列表。

    public class ListViewItem : ListBoxItem
    {

    }

2.3.13) NavigationWindow

表示支持内容导航的窗口。

NavigationWindow 派生自 Window ,并扩展它以导航到并显示内容。

内容可以是任何 .NET Framework 对象或 HTML 文件。 但一般情况下, Page 对象是打包导航内容的首选方式。

可以通过将属性设置为 Source 所需内容的 URI 来导航至内容。 此外,还可以使用方法的以下重载之一导航到内容 Navigate :

当内容通过 URI 导航到时, NavigationWindow 将返回包含内容的对象。

导航依据 URI 还支持导航到内容片段。 请参阅 FragmentNavigation

或者,可以通过使用接受对象的方法重载之一来导航到内容 Navigate :

导航的生存期可通过以下事件进行跟踪:

并非每次发生导航时都会引发所有事件;引发的事件集由 (内容或内容片段) 的导航类型确定,以及导航如何完成 (取消、停止或失败) 。

下图说明了这些事件将激发的顺序:

页面导航流程图

在导航过程中或导航后, NavigationWindow 提供有关要导航到的内容的信息,包括要导航到的内容的 uri (Source) 、当前内容 () 的 uri CurrentSource 以及包含导航到 () 的内容的对象 Content 。

导航到内容时,会 NavigationWindow 将导航记录为导航历史记录中的条目。 当出现新的导航时,通过调用 Navigate 方法或通过在前进导航历史记录中通过调用导航到某个条目来向后导航历史记录中添加一个条目 GoForward 。 通过在后退导航历史记录中通过调用来向后导航历史记录中添加一个条目 GoBack 。 CanGoBack 和 CanGoForward 报告在后向导航历史记录中是否存在条目。

第一次从另一段内容导航到一个内容时,将 NavigationWindow 自动显示允许用户在导航历史记录中导航的导航用户界面。 可以通过设置属性来配置显示导航 UI 的时间 ShowsNavigationUI 。

后退导航历史记录中的最新条目可通过调用删除 RemoveBackEntry 。

NavigationWindow 不会在导航历史记录中存储内容对象的实例。 相反, NavigationWindow 每次使用导航历史记录导航到内容对象时,都将创建该对象的新实例。 此行为旨在避免在将大量内容导航到时消耗过多的内存。 因此,不会从一个导航到下一个导航来记住内容的状态。 不过,WPF 提供了多种方法,通过这些方法,你可以在导航历史记录中存储一段内容的状态。

使用 AddBackEntry ,还可以记住单个页面实例的多个状态集。

NavigationWindow 是 WPF 中的两个导航器之一,另一个是 Frame 。 从本质上讲,导航器是一个支持导航和导航历史记录的类。 在视觉上,Xbap 使用 Internet Explorer 7 作为导航器来提供集成的用户体验。 但是,Xbap 实际上将 NavigationWindow 用作导航器; MainWindow 在 Internet explorer 7 中运行的 XBAP 的属性将返回对的引用 NavigationWindow ,并且由管理的导航历史记录 NavigationWindow 与 Internet Explorer 7 管理的导航历史记录集成。

内容模型: NavigationWindow为 ContentControl ,这意味着 NavigationWindow 可以包含文本、图像或面板等内容。 另外, NavigationWindow 是根元素,因此,不能是另一个元素的内容的一部分。 有关的内容模型的详细信息 Button ,请参阅 WPF 内容模型

自定义 System.windows.navigation.navigationwindow> 控件

若要对多个控件应用相同的属性设置 NavigationWindow ,请使用 Style 属性。 您可以修改默认值 ControlTemplate ,为控件指定独特的外观。 有关创建的详细信息 ControlTemplate ,请参阅 通过创建 System.windows.controls.controltemplate> 自定义现有控件的外观。 若要查看特定于的部分和状态 NavigationWindow ,请参阅 system.windows.navigation.navigationwindow> 样式和模板

此控件的依赖属性可能由控件的默认样式设置。 如果按默认样式设置属性,则当控件出现在应用程序中时,属性可能会更改为默认值。 默认样式取决于应用程序运行时使用的桌面主题。 有关详细信息,请参阅 默认的 WPF 主题

只有视觉对象属性已存在于控件的默认模板中并且已使用 TemplateBinding 设置时,设置该属性才有效。 在通过创建 ControlTemplate 自定义现有控件的外观一文的更改控件的视觉结构部分可以找到视觉属性列表。

    public class NavigationWindow : Window, INavigator, INavigatorBase, INavigatorImpl, IDownloader, IJournalNavigationScopeHost, IUriContext
    {
        public static readonly System.Windows.DependencyProperty BackStackProperty;
        public static readonly System.Windows.DependencyProperty CanGoBackProperty;
        public static readonly System.Windows.DependencyProperty CanGoForwardProperty;
        public static readonly System.Windows.DependencyProperty ForwardStackProperty;
        public static readonly System.Windows.DependencyProperty SandboxExternalContentProperty;
        public static readonly System.Windows.DependencyProperty ShowsNavigationUIProperty;
        public static readonly System.Windows.DependencyProperty SourceProperty;

        //获取一个 IEnumerable(用于枚举 NavigationWindow 的后退导航历史记录中的条目)。
        public System.Collections.IEnumerable BackStack { get; }

        //获取一个值,该值指示后退导航历史记录中是否至少有一个条目。
        public bool CanGoBack { get; }

        //获取一个值,该值指示前进导航历史记录中是否至少有一个条目。
        public bool CanGoForward { get; }

        //获取上次导航到的内容的统一资源标识符 (URI)。
        public Uri CurrentSource { get; }

        //获取一个 IEnumerable(用于枚举 NavigationWindow 的后退导航历史记录中的条目)。
        public System.Collections.IEnumerable ForwardStack { get; }

        //获取 NavigationService 用来为其内容提供导航服务的 NavigationWindow。
        public System.Windows.Navigation.NavigationService NavigationService { get; }

        //获取或设置一个值,该值指示是否使用 NavigationWindow 默认 Internet 区域权限集) 将外部 Extensible Application Markup Language (XAML) 内容隔离到部分信任的安全沙盒 (中。
        public bool SandboxExternalContent { get; set; }

        //获取或设置一个值,该值指示 NavigationWindow 是否显示其导航 UI。
        public bool ShowsNavigationUI { get; set; }

        //获取或设置当前内容的统一资源标识符 (URI),或当前正在导航到的新内容的 URI。
        public Uri Source { get; set; }

        //向包含 CustomContentState 对象的后退导航历史记录中添加一个条目。
        public void AddBackEntry(System.Windows.Navigation.CustomContentState state);

        //添加子对象。
        protected override void AddChild(object value);

        //将文本添加到对象。
        protected override void AddText(string text);

        //导航到后退导航历史记录中的最近的条目。
        public void GoBack();

        //导航到前进导航历史记录中的最近的条目。
        public void GoForward();

        //异步导航到指定的源内容。
        public bool Navigate(object content, object extraData);
        public bool Navigate(Uri source, object extraData);
        public bool Navigate(object content);
        this.Navigate(new HomePage());

        //在为可视化树创建模板生成时调用。
        public override void OnApplyTemplate();

        //引发 Closed 事件。
        protected override void OnClosed(EventArgs args);

        //为此 NavigationWindowAutomationPeer 创建并返回一个 NavigationWindow 对象。
        protected override System.Windows.Automation.Peers.AutomationPeer OnCreateAutomationPeer();

        //重新加载当前内容。
        public void Refresh();

        //移除后退历史记录中的最新日记条目。
        public System.Windows.Navigation.JournalEntry RemoveBackEntry();

        //指示是否应使 Content 属性持久化。
        public override bool ShouldSerializeContent();

        //停止为当前导航请求下载更多内容。
        public void StopLoading();

        //在开始导航到内容片段时发生,如果所需片段位于当前内容中,则为; 如果所需片段位于不同内容中,则在加载源 XAML 内容后发生。
        public event System.Windows.Navigation.FragmentNavigationEventHandler FragmentNavigation;

        //当已加载、分析并开始呈现目标导航内容时发生。
        public event System.Windows.Navigation.LoadCompletedEventHandler LoadCompleted;

        //找到导航的目标内容且可通过 Content 属性得到这些内容时发生,即使尚未加载完毕也是如此。
        public event System.Windows.Navigation.NavigatedEventHandler Navigated;

        //请求新导航时发生。
        public event System.Windows.Navigation.NavigatingCancelEventHandler Navigating;

        //在导航到所需内容的同时遇到错误时发生。
        public event System.Windows.Navigation.NavigationFailedEventHandler NavigationFailed;

        //在下载过程中定期发生,用于提供定位进度信息。
        public event System.Windows.Navigation.NavigationProgressEventHandler NavigationProgress;

        //在调用 StopLoading() 方法时发生,或者在当前导航正处于进行过程中时又请求一个新导航时发生。
        public event System.Windows.Navigation.NavigationStoppedEventHandler NavigationStopped;

        //获取或设置当前上下文的基统一资源标识符 (URI)。
        Uri System.Windows.Markup.IUriContext.BaseUri { get; set; }      
    }

2.3.14) PasswordBox

表示用于输入和处理密码的控件。

    public sealed class PasswordBox : Control, ITextBoxViewHost
    {
        public static readonly System.Windows.DependencyProperty CaretBrushProperty;
        public static readonly System.Windows.DependencyProperty IsInactiveSelectionHighlightEnabledProperty;
        public static readonly System.Windows.DependencyProperty IsSelectionActiveProperty;
        public static readonly System.Windows.DependencyProperty MaxLengthProperty;
        public static readonly System.Windows.RoutedEvent PasswordChangedEvent;
        public static readonly System.Windows.DependencyProperty PasswordCharProperty;
        public static readonly System.Windows.DependencyProperty SelectionBrushProperty;
        public static readonly System.Windows.DependencyProperty SelectionOpacityProperty;
        public static readonly System.Windows.DependencyProperty SelectionTextBrushProperty;

        //获取或设置用于指定密码框插入符号颜色的画笔。
        public System.Windows.Media.Brush CaretBrush { get; set; }

        //获取或设置指示当 PasswordBox 没有焦点时,PasswordBox 是否显示所选文本的值。
        public bool IsInactiveSelectionHighlightEnabled { get; set; }

        //获取指示 PasswordBox 是否具有焦点和选择文本的值。
        public bool IsSelectionActive { get; }

        //获取或设置要由此 PasswordBox 处理的密码的最大长度。
        public int MaxLength { get; set; }

        //获取或设置 PasswordBox 当前保留的密码。
        public string Password { get; set; }

        //获取或设置 PasswordBox 的掩码字符。
        public char PasswordChar { get; set; }

        //获取当前由 PasswordBox 作为 SecureString 保留的密码。
        public System.Security.SecureString SecurePassword { get; }

        //获取或设置会突出显示选定文本的画笔。
        public System.Windows.Media.Brush SelectionBrush { get; set; }

        //获取或设置 SelectionBrush 的不透明度。
        public double SelectionOpacity { get; set; }

        //获取或设置一个值,该值定义了在 PasswordBox 控件中用于所选文本的画笔。
        public System.Windows.Media.Brush SelectionTextBrush { get; set; }

        //清除 Password 属性的值。
        public void Clear();

        //在内部进程或应用程序调用用于构建当前模板的可视化树的 ApplyTemplate() 时调用。
        public override void OnApplyTemplate();

        //用剪贴板中的内容替换 PasswordBox 中的当前选定内容。
        public void Paste();

        //选择 PasswordBox 中的全部内容。
        public void SelectAll();

        //当 Password 属性的值更改时发生。
        public event System.Windows.RoutedEventHandler PasswordChanged;
    }

2.3.15) RadioButton

表示可由用户选择但不能清除的按钮。 可以通过单击来设置 IsChecked 的 RadioButton 属性,但只能以编程方式清除该属性。

RadioButton是 ContentControl ,这意味着它可以包含任何类型的单个对象 (例如字符串、图像或面板) 。 有关更多信息,请参见 ContentControl 类。

RadioButton具有两种状态:true 或 false 。 RadioButton是一个控件,该控件通常用作一组RadioButton控件中的项,也可以创建单个 RadioButtonRadioButton 的是被选中由其属性 IsChecked 的状态决定。

如果 RadioButton 被选中,则无法通过单击将其清除。 当 RadioButton 对元素进行分组时,按钮是互斥的。 用户在组中一次只能选择一个 RadioButton 项。 您可以通过将 RadioButton 控件放置在父控件内或通过设置每个RadioButton 控件的 GroupName 属性来对其进行分组。

若要对多个 RadioButton 控件应用相同的属性设置,请使用 Style 属性。 您可以修改 ControlTemplate 默认值,为控件指定独特的外观。 有关创建 ControlTemplate 的详细信息,请参阅 通过创建 System.windows.controls.controltemplate> 自定义现有控件的外观。 若要查看特定于 RadioButton 的部分和状态,请参阅 单选按钮样式和模板

此控件的依赖属性可能由控件的默认样式设置。 如果按默认样式设置属性,则当控件出现在应用程序中时,属性可能会更改为默认值。 默认样式取决于应用程序运行时使用的桌面主题。 有关详细信息,请参阅 默认的 WPF 主题

只有视觉对象属性已存在于控件的默认模板中并且已使用 TemplateBinding 设置时,设置该属性才有效。 在通过创建 ControlTemplate 自定义现有控件的外观一文的更改控件的视觉结构部分可以找到视觉属性列表。

    public class RadioButton : ToggleButton
    {
        public static readonly System.Windows.DependencyProperty GroupNameProperty;

        //获取或设置指定哪些 RadioButton 控件互相排斥的名称。
        public string GroupName { get; set; }

        //在调用单选按钮的 AccessKey 时调用。
        protected override void OnAccessKey(System.Windows.Input.AccessKeyEventArgs e);

        //在 IsChecked 属性变为 true 时调用。
        protected override void OnChecked(System.Windows.RoutedEventArgs e);

        //提供 RadioButtonAutomationPeer 此控件的适当实现,作为 WPF 自动化基础结构的一部分。
        protected override System.Windows.Automation.Peers.AutomationPeer OnCreateAutomationPeer();

        //由 OnClick() 方法调用以实现 RadioButton 控件的切换行为。
        protected internal override void OnToggle();        
    }

2.3.16) RepeatButton

表示从按下按钮到释放按钮的时间内重复引发其 Click 事件的控件。

RepeatButton是 ContentControl ,这意味着它可以包含任何类型的单个对象 (例如字符串、图像或面板) 。 有关更多信息,请参见 ContentControl 类。

RepeatButton类表示与类似的控件 Button 。 不过,RepeatButton可让你控制 Click 事件发生的时间和方式。 将 RepeatButton Click 从按下该事件到释放该事件的时间重复引发该事件。 Delay属性确定事件开始的时间。 还可以通过 Interval 属性控制重复的间隔。

自定义 RepeatButton 控件

若要对多个 RepeatButton 控件应用相同的属性设置,请使用 Style 属性。 您可以修改 ControlTemplate 默认值,为控件指定独特的外观。 有关创建 ControlTemplate 的详细信息,请参阅 通过创建 System.windows.controls.controltemplate> 自定义现有控件的外观。 若要查看特定于 RepeatButton 的部分和状态,请参阅 RepeatButton 样式和模板

此控件的依赖属性可能由控件的默认样式设置。 如果按默认样式设置属性,则当控件出现在应用程序中时,属性可能会更改为默认值。 默认样式取决于应用程序运行时使用的桌面主题。 有关详细信息,请参阅 默认的 WPF 主题

只有视觉对象属性已存在于控件的默认模板中并且已使用 TemplateBinding 设置时,设置该属性才有效。 在通过创建 ControlTemplate 自定义现有控件的外观一文的更改控件的视觉结构部分可以找到视觉属性列表。

    public class RepeatButton : ButtonBase
    {
        public static readonly System.Windows.DependencyProperty DelayProperty;
        public static readonly System.Windows.DependencyProperty IntervalProperty;

        //获取或设置 RepeatButton 在开始重复之前被按下时等待的时间(以毫秒为单位)。 该值必须为非负数。
        public int Delay { get; set; }

        //获取或设置开始重复后重复之间的时间间隔(以毫秒为单位)。 该值必须为非负数。
        public int Interval { get; set; }

        //引发自动化事件,并调用基方法来引发 Click 事件。
        protected override void OnClick();

        //提供 RepeatButtonAutomationPeer 此控件的适当实现,作为 WPF 基础结构的一部分。
        protected override System.Windows.Automation.Peers.AutomationPeer OnCreateAutomationPeer();

        //响应 KeyDown 事件。
        protected override void OnKeyDown(System.Windows.Input.KeyEventArgs e);

        //响应 KeyUp 事件。
        protected override void OnKeyUp(System.Windows.Input.KeyEventArgs e);

        //RepeatButton 失去鼠标捕获时调用。
        protected override void OnLostMouseCapture(System.Windows.Input.MouseEventArgs e);

        //在鼠标进入某个元素时报告。
        protected override void OnMouseEnter(System.Windows.Input.MouseEventArgs e);

        //在鼠标离开某个元素时报告
        protected override void OnMouseLeave(System.Windows.Input.MouseEventArgs e);

        //响应 MouseLeftButtonDown 事件。
        protected override void OnMouseLeftButtonDown(System.Windows.Input.MouseButtonEventArgs e);

        //响应 MouseLeftButtonUp 事件。
        protected override void OnMouseLeftButtonUp(System.Windows.Input.MouseButtonEventArgs e);
    }

2.3.17) StatusBarItem

表示 StatusBar 控件的项。

StatusBarItem是 ContentControl ,这意味着它可以包含任何类型的单个对象 (例如字符串、图像或面板) 。 有关更多信息,请参见 ContentControl 类。

StatusBarItem 对象用于定义StatusBar 控件中的项 。 StatusBar是父窗口底部的水平区域,应用程序可在该窗口中显示状态信息。 StatusBarItem可以包含复杂内容(如图形和文本),并可以接收事件。 StatusBar和 StatusBarItem 对象不能接收键盘焦点。

此控件的依赖属性可能由控件的默认样式设置。 如果按默认样式设置属性,则当控件出现在应用程序中时,属性可能会更改为默认值。 默认样式取决于应用程序运行时使用的桌面主题。 有关详细信息,请参阅 默认的 WPF 主题

    public class StatusBarItem : ContentControl
    {
        //指定 AutomationPeer 的 StatusBarItem。
        protected override System.Windows.Automation.Peers.AutomationPeer OnCreateAutomationPeer();
    }

2.3.18) ScrollViewer

表示可包含其他可视元素的可滚动区域。

 ScrollViewer 可使内容在小于其实际大小的区域中显示。 如果 ScrollViewer 的内容不完全可见, ScrollViewer 将显示用户可用于移动可见内容区域的滚动条。范围包含 ScrollViewer  所有内容的区域。 内容的可见区域是viewport。

物理滚动用于按预设的物理增量(通常按以像素为单位声明的值)滚动内容。 逻辑滚动用于滚动到逻辑树中的下一项。 如果需要物理滚动而不是逻辑滚动,请在 ScrollViewer 中包装host Panel element, 并将其 CanContentScroll 属性设置为 false 。 物理滚动是大多数Panel元素的默认滚动行为 。

如果 ScrollViewer 包含大量项目,滚动性能可能会受到影响。 在这种情况下,将设置 IsDeferredScrollingEnabled 为 true 。 这会使内容视图在拖动Thumb 时保持静态,并且仅在 Thumb 释放时才会更新。

由于ScrollViewer元素的滚动条是以该元素的默认样式定义的,因此,如果将自定义样式应用于ScrollViewer,则滚动条将不再显示。 滚动条必须以自定义样式定义才能显示。

自定义 ScrollViewer 控件

若要对多个 ScrollViewer 控件应用相同的属性设置,请使用 Style 属性。 您可以修改ControlTemplate 默认值 ,为控件指定独特的外观。 有关创建ControlTemplate 的详细信息 ,请参阅 通过创建 System.windows.controls.controltemplate> 自定义现有控件的外观。 若要查看特定于 ScrollViewer 的部分和状态,请参阅 ScrollViewer 样式和模板

此控件的依赖属性可能由控件的默认样式设置。 如果按默认样式设置属性,则当控件出现在应用程序中时,属性可能会更改为默认值。 默认样式取决于应用程序运行时使用的桌面主题。 有关详细信息,请参阅 默认的 WPF 主题

只有视觉对象属性已存在于控件的默认模板中并且已使用 TemplateBinding 设置时,设置该属性才有效。 在通过创建 ControlTemplate 自定义现有控件的外观一文的更改控件的视觉结构部分可以找到视觉属性列表。

    public class ScrollViewer : ContentControl
    {
        public static readonly System.Windows.DependencyProperty CanContentScrollProperty;
        public static readonly System.Windows.DependencyProperty ComputedHorizontalScrollBarVisibilityProperty;
        public static readonly System.Windows.DependencyProperty ComputedVerticalScrollBarVisibilityProperty;
        public static readonly System.Windows.DependencyProperty ContentHorizontalOffsetProperty;
        public static readonly System.Windows.DependencyProperty ContentVerticalOffsetProperty;
        public static readonly System.Windows.DependencyProperty ExtentHeightProperty;
        public static readonly System.Windows.DependencyProperty ExtentWidthProperty;
        public static readonly System.Windows.DependencyProperty HorizontalOffsetProperty;
        public static readonly System.Windows.DependencyProperty HorizontalScrollBarVisibilityProperty;
        public static readonly System.Windows.DependencyProperty IsDeferredScrollingEnabledProperty;
        public static readonly System.Windows.DependencyProperty PanningDecelerationProperty;
        public static readonly System.Windows.DependencyProperty PanningModeProperty;
        public static readonly System.Windows.DependencyProperty PanningRatioProperty;
        public static readonly System.Windows.DependencyProperty ScrollableHeightProperty;
        public static readonly System.Windows.DependencyProperty ScrollableWidthProperty;
        public static readonly System.Windows.RoutedEvent ScrollChangedEvent;
        public static readonly System.Windows.DependencyProperty VerticalOffsetProperty;
        public static readonly System.Windows.DependencyProperty VerticalScrollBarVisibilityProperty;
        public static readonly System.Windows.DependencyProperty ViewportHeightProperty;
        public static readonly System.Windows.DependencyProperty ViewportWidthProperty;

        //获取或设置一个值,该值指示是否允许滚动支持 IScrollInfo 接口的元素。
        public bool CanContentScroll { get; set; }

        //获取一个值,该值指示水平 ScrollBar 是否可见。
        public System.Windows.Visibility ComputedHorizontalScrollBarVisibility { get; }

        //获取一个值,该值表示垂直 ScrollBar 是否可见。
        public System.Windows.Visibility ComputedVerticalScrollBarVisibility { get; }

        //获取可见内容的水平偏移量。
        public double ContentHorizontalOffset { get; }

        //获取可见内容的垂直偏移量。
        public double ContentVerticalOffset { get; }

        //获取包含盘区垂直大小的一个值。
        public double ExtentHeight { get; }

        //获取包含盘区水平大小的值。
        public double ExtentWidth { get; }

        //获取一个值,该值指示控件的样式中定义有 ScrollViewer,而该样式则定义了自定义键盘滚动行为。
        protected internal override bool HandlesScrolling { get; }

        //获取一个值,该值包含滚动内容的水平偏移量。
        public double HorizontalOffset { get; }

        //获取或设置一个值,该值指示是否应显示水平 ScrollBar。
        public System.Windows.Controls.ScrollBarVisibility HorizontalScrollBarVisibility { get; set; }

        //获取或设置一个值,该值指示当用户拖动 Thumb 的 ScrollBar 时,内容是否为静止状态。
        public bool IsDeferredScrollingEnabled { get; set; }

        //获取或设置在 ScrollViewer 惯性中每个单位) 每个单位 (1/96th 每英寸的速率与设备无关的单位速度。
        public double PanningDeceleration { get; set; }

        //获取或设置 ScrollViewer 响应触摸操作的方式。
        public System.Windows.Controls.PanningMode PanningMode { get; set; }

        //获取或设置滚动偏移与转换操作偏移的比例。
        public double PanningRatio { get; set; }

        //获取一个值,该值表示可滚动的内容元素的垂直大小。
        public double ScrollableHeight { get; }

        //获取一个值,该值表示可滚动的内容元素的水平大小。
        public double ScrollableWidth { get; }

        //获取或设置实现 IScrollInfo 接口并提供此 ScrollViewer 的滚动属性值的元素。
        protected internal System.Windows.Controls.Primitives.IScrollInfo ScrollInfo { get; set; }

        //获取包含滚动内容的垂直偏移量的值。
        public double VerticalOffset { get; }

        //获取或设置一个值,该值指示是否应显示垂直 ScrollBar。
        public System.Windows.Controls.ScrollBarVisibility VerticalScrollBarVisibility { get; set; }

        //获取包含内容视区垂直大小的值。
        public double ViewportHeight { get; }

        //获取包含内容视区水平大小的值。
        public double ViewportWidth { get; }

        //排列 ScrollViewer 的内容。
        protected override System.Windows.Size ArrangeOverride(System.Windows.Size arrangeSize);

        //获取给定元素的 CanContentScroll 依赖属性值。
        public static bool GetCanContentScroll(System.Windows.DependencyObject element);

        //获取给定元素的 HorizontalScrollBarVisibility 依赖属性值。
        public static System.Windows.Controls.ScrollBarVisibility GetHorizontalScrollBarVisibility(System.Windows.DependencyObject element);

        //返回指定对象的 IsDeferredScrollingEnabled 属性值。
        public static bool GetIsDeferredScrollingEnabled(System.Windows.DependencyObject element);

        //返回指定对象的 PanningDeceleration 属性值。
        public static double GetPanningDeceleration(System.Windows.DependencyObject element);

        //返回指定对象的 PanningMode 属性值。
        public static System.Windows.Controls.PanningMode GetPanningMode(System.Windows.DependencyObject element);

        //返回指定对象的 PanningRatio 属性值。
        public static double GetPanningRatio(System.Windows.DependencyObject element);

        //获取给定元素的 VerticalScrollBarVisibility 依赖属性值。
        public static System.Windows.Controls.ScrollBarVisibility GetVerticalScrollBarVisibility(System.Windows.DependencyObject element);

        //执行命中测试确定指定点是否在此 ScrollViewer 的边界内。
        protected override System.Windows.Media.HitTestResult HitTestCore(System.Windows.Media.PointHitTestParameters hitTestParameters);

        //由附加到 ScrollViewer 的 IScrollInfo 接口在任何滚动属性大小的值更改时调用。 滚动属性包括偏移、范围或视区。
        public void InvalidateScrollInfo();

        //将 ScrollViewer 内容向下滚动一行。
        public void LineDown();

        //将 ScrollViewer 内容向左滚动预先确定的量。
        public void LineLeft();

        //将 ScrollViewer 内容向右滚动预先确定的量。
        public void LineRight();

        //向上滚动一行 ScrollViewer 内容。
        public void LineUp();

        //测量 ScrollViewer 元素的内容。
        protected override System.Windows.Size MeasureOverride(System.Windows.Size constraint);

        //在内部进程或应用程序调用用于构建当前模板的可视化树的 ApplyTemplate() 时调用。
        public override void OnApplyTemplate();

        //提供 AutomationPeer 此控件的适当实现,作为 Windows Presentation Foundation (WPF) 自动化基础结构的一部分。
        protected override System.Windows.Automation.Peers.AutomationPeer OnCreateAutomationPeer();

        //响应特定键盘输入,并引发相关滚动行为。
        protected override void OnKeyDown(System.Windows.Input.KeyEventArgs e);

        //在 ManipulationCompleted 事件发生时调用。
        protected override void OnManipulationCompleted(System.Windows.Input.ManipulationCompletedEventArgs e);

        //在 ManipulationDelta 事件发生时调用。
        protected override void OnManipulationDelta(System.Windows.Input.ManipulationDeltaEventArgs e);

        //在 ManipulationInertiaStarting 事件发生时调用。
        protected override void OnManipulationInertiaStarting(System.Windows.Input.ManipulationInertiaStartingEventArgs e);

        //在 ManipulationStarting 事件发生时调用。
        protected override void OnManipulationStarting(System.Windows.Input.ManipulationStartingEventArgs e);

        //响应鼠标按钮的左键单击操作。
        protected override void OnMouseLeftButtonDown(System.Windows.Input.MouseButtonEventArgs e);

        //响应鼠标滚轮的单击操作。
        protected override void OnMouseWheel(System.Windows.Input.MouseWheelEventArgs e);

        //当检测到滚动状态发生变化(例如,滚动位置、范围或视区大小发生变化)时调用。
        protected virtual void OnScrollChanged(System.Windows.Controls.ScrollChangedEventArgs e);

        //当检测到由触笔启动的点击动作时调用。
        protected override void OnStylusSystemGesture(System.Windows.Input.StylusSystemGestureEventArgs e);

        //将 ScrollViewer 内容向下滚动一页。
        public void PageDown();

        //将 ScrollViewer 内容向左滚动一页。
        public void PageLeft();

        //将 ScrollViewer 内容向右滚动一页。
        public void PageRight();

        //向上滚动一页 ScrollViewer 内容。
        public void PageUp();

        //垂直滚动到 ScrollViewer 内容的末尾位置。
        public void ScrollToBottom();

        //垂直滚动到 ScrollViewer 内容的末尾位置。
        public void ScrollToEnd();

        //垂直滚动到 ScrollViewer 内容的开始位置。
        public void ScrollToHome();

        //将 ScrollViewer 中的内容滚动到指定的水平偏移位置
        public void ScrollToHorizontalOffset(double offset);

        //水平滚动到 ScrollViewer 内容的开始位置。
        public void ScrollToLeftEnd();

        //水平滚动到 ScrollViewer 内容的末尾位置。
        public void ScrollToRightEnd();

        //垂直滚动到 ScrollViewer 内容的开始位置。
        public void ScrollToTop();

        //将 ScrollViewer 中的内容滚动到指定的垂直偏移位置。
        public void ScrollToVerticalOffset(double offset);

        //将 CanContentScroll 依赖属性的值设为给定元素。
        public static void SetCanContentScroll(System.Windows.DependencyObject element, bool canContentScroll);

        //将 HorizontalScrollBarVisibility 依赖属性的值设为给定元素。
        public static void SetHorizontalScrollBarVisibility(System.Windows.DependencyObject element, System.Windows.Controls.ScrollBarVisibility horizontalScrollBarVisibility);

        //为指定对象设置 IsDeferredScrollingEnabled 属性。
        public static void SetIsDeferredScrollingEnabled(System.Windows.DependencyObject element, bool value);

        //为指定对象设置 PanningDeceleration 属性。
        public static void SetPanningDeceleration(System.Windows.DependencyObject element, double value);

        //为指定对象设置 PanningMode 属性。
        public static void SetPanningMode(System.Windows.DependencyObject element, System.Windows.Controls.PanningMode panningMode);

        //为指定对象设置 PanningRatio 属性。
        public static void SetPanningRatio(System.Windows.DependencyObject element, double value);

        //将 VerticalScrollBarVisibility 依赖属性的值设为给定元素。
        public static void SetVerticalScrollBarVisibility(System.Windows.DependencyObject element, System.Windows.Controls.ScrollBarVisibility verticalScrollBarVisibility);

        //在检测到滚动位置、范围或视区大小的变化时发生。
        public event System.Windows.Controls.ScrollChangedEventHandler ScrollChanged;
    }

2.3.19) ToolTip

表示一个控件,该控件可创建一个弹出窗口,以便在界面中显示元素的信息。

ToolTip是 ContentControl ,这意味着它可以包含任何类型的单个对象 (例如字符串、图像或面板) 。 有关更多信息,请参见 ContentControl 类。

使用 ToolTip 控件为用户提供信息。 例如,可以在Button 或 ToolBar in a ToolBarTray 中使用ToolTip 显示提示信息 。 ToolTip控件的内容可以从简单的文本字符串到更复杂的内容(例如具有嵌入式文本和图像的StackPanel)变化。ToolTip无法获得焦点。

ToolTip控件不能有父级。 例如,不能将的 Content 属性设置 Button 为 ToolTip ,而是将分配 ToolTip 给 FrameworkContentElement.ToolTip 和 FrameworkElement.ToolTip 属性。

通过在ToolTip中定义,可以在多个元素上使用 ToolTip ResourceDictionary 。

ToolTip类的属性用于定义ToolTip的位置和行为。其中的许多属性也是在类中定义的 ToolTipService 。 如果其中一个属性的值由 ToolTip 属性和 ToolTipService 附加属性指定,则 ToolTipService 使用属性的值。 此外, ToolTipService 类还提供属性来设置计时行为。 这些附加属性不包含在类中, ToolTip 但可由控件使用。

自定义 ToolTip 控件

若要对多个控件应用相同的属性设置 ToolTip ,请使用 Style 属性。 您可以修改默认值 ControlTemplate ,为控件指定独特的外观。 有关创建的详细信息 ControlTemplate ,请参阅 通过创建 System.windows.controls.controltemplate> 自定义现有控件的外观。 若要查看特定于的部分和状态 ToolTip ,请参阅 工具提示样式和模板

此控件的依赖属性可能由控件的默认样式设置。 如果按默认样式设置属性,则当控件出现在应用程序中时,属性可能会更改为默认值。 默认样式取决于应用程序运行时使用的桌面主题。 有关详细信息,请参阅 默认的 WPF 主题

只有视觉对象属性已存在于控件的默认模板中并且已使用 TemplateBinding 设置时,设置该属性才有效。 在通过创建 ControlTemplate 自定义现有控件的外观一文的更改控件的视觉结构部分可以找到视觉属性列表。

    public class ToolTip : ContentControl
    {
        public static readonly System.Windows.RoutedEvent ClosedEvent;
        public static readonly System.Windows.DependencyProperty CustomPopupPlacementCallbackProperty;
        public static readonly System.Windows.DependencyProperty HasDropShadowProperty;
        public static readonly System.Windows.DependencyProperty HorizontalOffsetProperty;
        public static readonly System.Windows.DependencyProperty IsOpenProperty;
        public static readonly System.Windows.RoutedEvent OpenedEvent;
        public static readonly System.Windows.DependencyProperty PlacementProperty;
        public static readonly System.Windows.DependencyProperty PlacementRectangleProperty;
        public static readonly System.Windows.DependencyProperty PlacementTargetProperty;
        public static readonly System.Windows.DependencyProperty StaysOpenProperty;
        public static readonly System.Windows.DependencyProperty VerticalOffsetProperty;

        //获取或设置用于放置此 ToolTip 的委托处理程序方法。
        public System.Windows.Controls.Primitives.CustomPopupPlacementCallback CustomPopupPlacementCallback { get; set; }

        //获取或设置一个指示控件是否有投影的值。
        public bool HasDropShadow { get; set; }

        //获取或设置目标原点与弹出项对齐点之间的水平距离。
        public double HorizontalOffset { get; set; }

        //获取或设置一个表示 ToolTip 是否可见的值。
        public bool IsOpen { get; set; }

        //获取或设置 ToolTip 控件打开时的方向,并指定 ToolTip 控件在与屏幕边界重叠时的行为。
        public System.Windows.Controls.Primitives.PlacementMode Placement { get; set; }

        //获取或设置 ToolTip 控件打开时所在位置与之相关的矩形区域。
        public System.Windows.Rect PlacementRectangle { get; set; }

        //获取或设置 UIElement,当它打开时相对于它确定 ToolTip 的位置。
        public System.Windows.UIElement PlacementTarget { get; set; }

        //获取或设置一个值,该值指示打开的 ToolTip 是否一直保持打开状态,直到用户在鼠标不在 ToolTip 上时单击鼠标。
        public bool StaysOpen { get; set; }

        //获取或设置目标原点与弹出项对齐点之间的垂直距离。
        public double VerticalOffset { get; set; }

        //响应 Closed 事件。
        protected virtual void OnClosed(System.Windows.RoutedEventArgs e);

        //当 Content 属性更改时调用。
        protected override void OnContentChanged(object oldContent, object newContent);

        //创建 AutomationPeer 控件的 ToolTip 实现。
        protected override System.Windows.Automation.Peers.AutomationPeer OnCreateAutomationPeer();

        //响应 Opened 事件。
        protected virtual void OnOpened(System.Windows.RoutedEventArgs e);

        //响应 ToolTip 的可视父级的更改。
        protected internal override void OnVisualParentChanged(System.Windows.DependencyObject oldParent);

        //在 ToolTip 关闭并不再可见时发生。
        public event System.Windows.RoutedEventHandler Closed;

        //在 ToolTip 变得可见时发生。
        public event System.Windows.RoutedEventHandler Opened;
    }

2.3.20) UserControl

提供一种创建控件的简单方法。

Windows Presentation Foundation (WPF) 的控件支持丰富的内容、样式、触发器和模板。 在许多情况下,这些功能可让你创建自定义和一致的体验,而无需创建新的控件。 有关详细信息,请参阅 样式设置和模板化

如果确实需要创建新控件,最简单的方法是创建派生自的类 UserControl 。 在执行此操作之前,请考虑您的控件将不支持模板,因此不支持复杂的自定义。 但是, UserControl 如果你想要通过向其添加现有元素来生成控件(与生成应用程序的方式类似),并且无需支持复杂的自定义,则从派生。 (如果要将模板与控件一起使用,请改用派生自 Control 。 ) 有关创作控件的不同模型的详细信息,请参阅 控件创作概述

UserControl是 ContentControl ,这意味着它可以包含任何类型的单个对象 (例如字符串、图像或面板) 。 有关更多信息,请参见 ContentControl 类。

此控件的依赖属性可能由控件的默认样式设置。 如果按默认样式设置属性,则当控件出现在应用程序中时,属性可能会更改为默认值。 默认样式取决于应用程序运行时使用的桌面主题。 有关详细信息,请参阅 默认的 WPF 主题

    public class UserControl : ContentControl
    {
        //创建并返回此 AutomationPeer 的一个 UserControl。
        protected override System.Windows.Automation.Peers.AutomationPeer OnCreateAutomationPeer();
    }

2.3.21) Window

提供创建、配置、显示和管理窗口和对话框的生存期的能力。

用户与独立应用程序之间的交互点是一个窗口。 WPF窗口 (Windows Presentation Foundation) 包括两个不同的区域:

  • 承载 windows 修饰的非工作区,包括图标、标题、系统菜单、最小化按钮、最大化按钮、还原按钮、关闭按钮和边框。
  • 承载特定于应用程序的内容的工作区。

标准窗口如下图所示:

窗口元素

Window 封装了创建、配置、显示和管理窗口和对话框的生存期的功能,并提供了以下关键服务:

生存期管理: Activate 、 Activated 、 Close 、Closed、 Closing 、Deactivated、 Hide、 IsActive、  Show 、 SourceInitialized 。

窗口管理: GetWindow 、 OwnedWindows 、 Owner 。

外观和行为: AllowsTransparency 、 ContentRendered 、 DragMove 、 Icon 、 Left 、 LocationChanged 、ResizeMode、 RestoreBounds 、ShowActivated 、ShowInTaskbar、 SizeToContent 、StateChanged、 Title、 Top 、Topmost、 WindowStartupLocation 、WindowState 、 WindowStyle

对话框: DialogResult 、 ShowDialog 。

此外,还 Application 公开了对管理应用程序中所有窗口的特殊支持:

  • 应用程序维护当前在应用程序中实例化的所有窗口的列表。 此列表由 Windows 属性公开。
  • 默认情况下, MainWindow 将使用对 Window 应用程序中实例化的第一个的引用自动设置。 从而使窗口成为主应用程序窗口。

Window可以使用标记、标记和代码隐藏或代码来实现。

Window 主要用于显示独立应用程序的窗口和对话框。 但是,对于需要在窗口级别导航的应用程序(如向导),可以改为使用 NavigationWindow ; NavigationWindow 从派生 Window ,并使用浏览器样式的导航支持对其进行扩展。

Window 需要 UnmanagedCode 实例化安全权限。 这会产生以下影响:

  • 当从 Internet 或本地 Intranet 区域启动时,ClickOnce 部署的独立应用程序将请求权限提升。
  • 请求小于完全权限的 Xbap 将不能实例化 windows 或对话框。

有关独立应用程序部署和安全注意事项的信息,请参阅 WPF 安全策略-平台安全性

Window是 ContentControl ,这意味着它可以包含任何类型的单个对象 (例如字符串、图像或面板) 。 有关更多信息,请参见 ContentControl 类。 另外, Window 是根元素,因此,不能是另一个元素的内容的一部分。

    public class Window : ContentControl, IWindowService
    {
        public static readonly System.Windows.DependencyProperty AllowsTransparencyProperty;
        public static readonly System.Windows.RoutedEvent DpiChangedEvent;
        public static readonly System.Windows.DependencyProperty IconProperty;
        public static readonly System.Windows.DependencyProperty IsActiveProperty;
        public static readonly System.Windows.DependencyProperty LeftProperty;
        public static readonly System.Windows.DependencyProperty ResizeModeProperty;
        public static readonly System.Windows.DependencyProperty ShowActivatedProperty;
        public static readonly System.Windows.DependencyProperty ShowInTaskbarProperty;
        public static readonly System.Windows.DependencyProperty SizeToContentProperty;
        public static readonly System.Windows.DependencyProperty TaskbarItemInfoProperty;
        public static readonly System.Windows.DependencyProperty TitleProperty;
        public static readonly System.Windows.DependencyProperty TopmostProperty;
        public static readonly System.Windows.DependencyProperty TopProperty;
        public static readonly System.Windows.DependencyProperty WindowStateProperty;
        public static readonly System.Windows.DependencyProperty WindowStyleProperty;

        //获取或设置一个值,该值指示窗口的工作区是否支持透明。
        public bool AllowsTransparency { get; set; }

        //获取或设置对话框结果值,此值是从 ShowDialog() 方法返回的值。
        public bool? DialogResult { get; set; }

        //获取或设置窗口的图标。
        public System.Windows.Media.ImageSource Icon { get; set; }

        //获取一个值,该值指示窗口是否为活动窗口。
        public bool IsActive { get; }

        //获取或设置窗口左边缘相对于桌面的位置。
        public double Left { get; set; }

        //获取窗口的逻辑子元素的一个枚举数。
        protected internal override System.Collections.IEnumerator LogicalChildren { get; }

        //获取此窗口所拥有的窗口的集合。
        public System.Windows.WindowCollection OwnedWindows { get; }

        //获取或设置拥有此 Window 的 Window。
        public System.Windows.Window Owner { get; set; }

        //获取或设置调整大小模式。
        public System.Windows.ResizeMode ResizeMode { get; set; }

        //获取窗口在最小化或最大化之前的大小和位置。
        public System.Windows.Rect RestoreBounds { get; }

        //获取或设置一个值,该值指示在第一次显示窗口时,窗口是否处于激活状态。
        public bool ShowActivated { get; set; }

        //获取或设置一个指示窗口是否具有任务栏按钮的值。
        public bool ShowInTaskbar { get; set; }

        //获取或设置一个值,该值指示窗口是否自动调整自身大小以适应其内容大小。
        public System.Windows.SizeToContent SizeToContent { get; set; }

        //获取或设置的 Windows 7 任务栏缩略图 Window 。
        public System.Windows.Shell.TaskbarItemInfo TaskbarItemInfo { get; set; }

        //获取或设置窗口的标题。
        public string Title { get; set; }

        //获取或设置窗口上边缘相对于桌面的位置。
        public double Top { get; set; }

        //获取或设置一个值,该值指示窗口是否出现在 Z 顺序的最顶层。
        public bool Topmost { get; set; }

        //获取或设置窗口首次显示时的位置。
        public System.Windows.WindowStartupLocation WindowStartupLocation { get; set; }

        //获取或设置一个值,该值指示窗口是处于还原、最小化还是最大化状态。
        public System.Windows.WindowState WindowState { get; set; }

        //获取或设置窗口的边框样式。
        public System.Windows.WindowStyle WindowStyle { get; set; }

        //尝试将窗口置于前台并激活它。
        public bool Activate();

        //重写此方法可对窗口及其子元素进行排列和大小调整。
        protected override System.Windows.Size ArrangeOverride(System.Windows.Size arrangeBounds);

        //手动关闭 Window。
        public void Close();

        //允许使用在窗口工作区的暴露区域上方按下其鼠标左键的鼠标来拖动窗口。
        public void DragMove();

        //返回对 Window 对象的引用,该对象承载依赖项对象所在的内容树。
        public static System.Windows.Window GetWindow(System.Windows.DependencyObject dependencyObject);

        //使窗口不可见。
        public void Hide();

        //重写此方法可测量窗口的大小。
        protected override System.Windows.Size MeasureOverride(System.Windows.Size availableSize);

        //引发 Activated 事件。
        protected virtual void OnActivated(EventArgs e);

        //引发 Closed 事件。
        protected virtual void OnClosed(EventArgs e);

        //引发 Closing 事件。
        protected virtual void OnClosing(System.ComponentModel.CancelEventArgs e);

        //当 Content 属性更改时调用。
        protected override void OnContentChanged(object oldContent, object newContent);

        //当 Content 属性更改时调用。
        protected virtual void OnContentRendered(EventArgs e);

        //为此 WindowAutomationPeer 创建并返回一个 Window 对象。
        protected override System.Windows.Automation.Peers.AutomationPeer OnCreateAutomationPeer();

        //引发 Deactivated 事件。
        protected virtual void OnDeactivated(EventArgs e);

        //呈现此窗口所使用的 DPI 发生变化时进行调用。
        protected override void OnDpiChanged(System.Windows.DpiScale oldDpi, System.Windows.DpiScale newDpi);

        //引发 LocationChanged 事件。
        protected virtual void OnLocationChanged(EventArgs e);

        //在 ManipulationBoundaryFeedback 事件发生时调用。
        protected override void OnManipulationBoundaryFeedback(System.Windows.Input.ManipulationBoundaryFeedbackEventArgs e);

        //引发 SourceInitialized 事件。
        protected override void OnManipulationBoundaryFeedback(System.Windows.Input.ManipulationBoundaryFeedbackEventArgs e);

        //引发 StateChanged 事件。
        protected virtual void OnStateChanged(EventArgs e);

        //此 Window 对象的 VisualCollection 被修改时调用。
        protected internal override void OnVisualChildrenChanged(System.Windows.DependencyObject visualAdded, System.Windows.DependencyObject visualRemoved);

        //在窗口的父项更改时调用。
        protected internal override sealed void OnVisualParentChanged(System.Windows.DependencyObject oldParent);

        //打开窗口并返回,而不等待新打开的窗口关闭。
        public void Show();

        //打开一个窗口,并且仅在新打开的窗口关闭后才返回。
        public bool? ShowDialog();

        //在窗口成为前台窗口时发生。
        public event EventHandler Activated;

        //在窗口即将关闭时发生。
        public event EventHandler Closed;

        //在调用 Close() 之后立即发生,并且可进行处理以取消关闭窗口。
        public event System.ComponentModel.CancelEventHandler Closing;

        //在窗口的内容呈现完毕之后发生。
        public event EventHandler ContentRendered;

        //在窗口成为后台窗口时发生。
        public event EventHandler Deactivated;

        //显示窗口的屏幕的 DPI 发生更改后出现。
        public event System.Windows.DpiChangedEventHandler DpiChanged;

        //在窗口的位置改变时发生。
        public event EventHandler LocationChanged;

        //引发此事件是为了支持与 Win32 的互操作。 请参阅 HwndSource。
        public event EventHandler SourceInitialized;

        //在窗口的 WindowState 属性更改时发生。
        public event EventHandler StateChanged;
    }

 

 

参考微软MSDN

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值