ExpandCollapsePattern
表示以可视方式进行展开(以显示内容)和折叠(以隐藏内容)的 控件。例如ComboBox控件支持ExpandCollapsePattern。
ExpandCollapsePattern有两个主要方法:
Expand()方法:隐藏 AutomationElement 的全部子代节点、控件或内容。
Collapse()方法:显示 AutomationElement 的全部子节点、控件或内容。
以下代码是用ExpandCollapsePattern来测试ComboBox控件的Expand和Collapse。
复制代码
以下代码为被测程序的xaml文件:
复制代码
Summary
本文主要是对ExpandCollapsePattern 做简单的介绍,并使用ExpandCollapsePattern来操作ComboBox控件,对ComboBox进行Expand和Collapse操作。( 文/ 开着拖拉机)
表示以可视方式进行展开(以显示内容)和折叠(以隐藏内容)的 控件。例如ComboBox控件支持ExpandCollapsePattern。
ExpandCollapsePattern有两个主要方法:
Expand()方法:隐藏 AutomationElement 的全部子代节点、控件或内容。
Collapse()方法:显示 AutomationElement 的全部子节点、控件或内容。
以下代码是用ExpandCollapsePattern来测试ComboBox控件的Expand和Collapse。
- using System;
- using System.Text;
- using System.Diagnostics;
- using System.Threading;
- using System.Windows.Automation;
- namespace UIATest
- {
- class Program
- {
- static void Main(string[] args)
- {
- Process process = Process.Start(@"F:\CSharpDotNet\AutomationTest\ATP\WpfApp\bin\Debug\WpfApp.exe");
- int processId = process.Id;
- AutomationElement element = FindElementById(processId, "comboBox1");
- ExpandCollapsePattern currentPattern = GetExpandCollapsePattern(element);
- currentPattern.Expand();
- Thread.Sleep(1000);
- currentPattern.Collapse();
- }
- /** <summary>
- /// Get the automation elemention of current form.
- /// </summary>
- /// <param name="processId">Process Id</param>
- /// <returns>Target element</returns>
- public static AutomationElement FindWindowByProcessId(int processId)
- {
- AutomationElement targetWindow = null;
- int count = 0;
- try
- {
- Process p = Process.GetProcessById(processId);
- targetWindow = AutomationElement.FromHandle(p.MainWindowHandle);
- return targetWindow;
- }
- catch (Exception ex)
- {
- count++;
- StringBuilder sb = new StringBuilder();
- string message = sb.AppendLine(string.Format("Target window is not existing.try #{0}", count)).ToString();
- if (count > 5)
- {
- throw new InvalidProgramException(message, ex);
- }
- else
- {
- return FindWindowByProcessId(processId);
- }
- }
- }
- /** <summary>
- /// Get the automation element by automation Id.
- /// </summary>
- /// <param name="windowName">Window name</param>
- /// <param name="automationId">Control automation Id</param>
- /// <returns>Automatin element searched by automation Id</returns>
- public static AutomationElement FindElementById(int processId, string automationId)
- {
- AutomationElement aeForm = FindWindowByProcessId(processId);
- AutomationElement tarFindElement = aeForm.FindFirst(TreeScope.Descendants,
- new PropertyCondition(AutomationElement.AutomationIdProperty, automationId));
- return tarFindElement;
- }
- ExpandCollapsePattern helper#region ExpandCollapsePattern helper
- /** <summary>
- /// Get ExpandCollapsePattern
- /// </summary>
- /// <param name="element">AutomationElement instance</param>
- /// <returns>ExpandCollapsePattern instance</returns>
- public static ExpandCollapsePattern GetExpandCollapsePattern(AutomationElement element)
- {
- object currentPattern;
- if (!element.TryGetCurrentPattern(ExpandCollapsePattern.Pattern, out currentPattern))
- {
- throw new Exception(string.Format("Element with AutomationId '{0}' and Name '{1}' does not support the ExpandCollapsePattern.",
- element.Current.AutomationId, element.Current.Name));
- }
- return currentPattern as ExpandCollapsePattern;
- }
- #endregion
- }
- }
- 1<Window x:Class="WpfApp.Window1"
- 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- 3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- 4 Title="Window1" Height="219" Width="353">
- 5 <Grid>
- 6 <ComboBox Name="comboBox1" Height="23" VerticalAlignment="Top" Margin="94,58,0,0" HorizontalAlignment="Left" Width="119">
- 7 <ComboBoxItem>kaden</ComboBoxItem>
- 8 <ComboBoxItem>sam</ComboBoxItem>
- 9 </ComboBox>
- 10 </Grid>
- 11</Window>
- 12
本文主要是对ExpandCollapsePattern 做简单的介绍,并使用ExpandCollapsePattern来操作ComboBox控件,对ComboBox进行Expand和Collapse操作。( 文/ 开着拖拉机)