Fluent(Codeplex)Ribbon-WPF应用程序中关闭、最大化、最小化按钮的自动化

Fluent(Codeplex)Ribbon-WPF应用程序中关闭、最大化、最小化按钮的自动化,wpf,automation,coded-ui-tests,ribbon,fluent-ribbon,Wpf,Automation,Coded Ui Tests,Ribbon,Fluent Ribbon,我正在尝试自动化fluent Ribbon控件(www.fluent.codeplex.com)。我成功地实现了大部分控制的自动化。但有一个问题,比如关闭、最大化和最小化按钮不能被UI自动化工具识别或识别,例如,使用VisualStudio的编码UI测试。间谍工具不识别关闭、最大化、最小化等按钮。我无法通过自动化关闭应用程序(使用fluent Ribbon) 我正在查看RibbonWindow.xaml中的以下代码部分 <StackPanel x:Name="PART_ButtonsPan

我正在尝试自动化fluent Ribbon控件(www.fluent.codeplex.com)。我成功地实现了大部分控制的自动化。但有一个问题,比如关闭、最大化和最小化按钮不能被UI自动化工具识别或识别,例如,使用VisualStudio的编码UI测试。间谍工具不识别关闭、最大化、最小化等按钮。我无法通过自动化关闭应用程序(使用fluent Ribbon)

我正在查看RibbonWindow.xaml中的以下代码部分

<StackPanel x:Name="PART_ButtonsPanel" HorizontalAlignment="Right" Margin="0,8,8,0" VerticalAlignment="Top" Orientation="Horizontal">
          <Button x:Name="minimizeButton" Style="{DynamicResource CaptionButtonStyle}" Width="35" Height="19" BorderThickness="1,0,0,1" Command="{x:Static Fluent:RibbonWindow.MinimizeCommand}">
            <Image Width="Auto" Height="Auto" HorizontalAlignment="Center" VerticalAlignment="Center" Stretch="None" Source="{DynamicResource ImageCaptionButtonMinimize}" SnapsToDevicePixels="True" RenderOptions.BitmapScalingMode="NearestNeighbor"/>
          </Button>
          <Button x:Name="maximizeButton" Margin="-1,0,0,0" Style="{DynamicResource CaptionButtonStyle}" Width="35" Height="19" BorderThickness="0,0,0,1" Command="{x:Static Fluent:RibbonWindow.MaximizeCommand}">
            <Image Width="Auto" Height="Auto" HorizontalAlignment="Center" VerticalAlignment="Center" Stretch="None" Source="{DynamicResource ImageCaptionButtonMaximize}" SnapsToDevicePixels="True" RenderOptions.BitmapScalingMode="NearestNeighbor"/>
          </Button>
          <Button x:Name="normalizeButton" Margin="-1,0,0,0" Style="{DynamicResource CaptionButtonStyle}" Width="35" Height="19" BorderThickness="0,0,0,1" Command="{x:Static Fluent:RibbonWindow.NormalizeCommand}">
            <Image Width="Auto" Height="Auto" HorizontalAlignment="Center" VerticalAlignment="Center" Stretch="None" Source="{DynamicResource ImageCaptionButtonNormalize}" SnapsToDevicePixels="True" RenderOptions.BitmapScalingMode="NearestNeighbor"/>
          </Button>
          <Button x:Name="closeButton" Margin="-1,0,0,0" Style="{DynamicResource CaptionButtonStyle}" Width="35" Height="19" BorderThickness="0,0,1,1" Background="Red" Command="{x:Static Fluent:RibbonWindow.CloseCommand}">
            <Image Width="Auto" Height="Auto" HorizontalAlignment="Center" VerticalAlignment="Center" Stretch="None" Source="{DynamicResource ImageCaptionButtonClose}" SnapsToDevicePixels="True" RenderOptions.BitmapScalingMode="NearestNeighbor"/>
          </Button>
        </StackPanel>

我尝试了很多东西(比如放置自动化Id),但都没有成功。我看到的是错误的代码部分吗

有人能帮助我在关闭按钮中添加自动化UI或名称,或者通过我为什么能解决这个问题来进行一些更改吗?唯一的要求是应用程序的关闭、最大化、最小化按钮应该由UI自动化工具识别


这不会帮助您识别按钮,但您可以尝试将标准键盘快捷键发送到窗口以实际执行操作:

//close the window
Keyboard.SendKeys(myWindow, "{F4}", ModifierKeys.Alt);

你可以再检查一下。如果UI自动化没有给您任何帮助,您可以尝试在控制窗口附近发送(请参阅)Win32消息,如WM_,您可以使用参数SW_MAXIMIZE、SW_MINIMIZE的函数。

有解决方案吗?我也向Codeplex报告了这一点,但还没有回复。我可以以不同的方式关闭应用程序,如:文件->退出。但我的要求是通过带有一些自动化UID或名称的自动化工具来识别功能区窗口的关闭、最大化和最小化按钮。因此,点击关闭按钮应该可以通过像VisualStudio这样的自动化工具工作。