小编jan*_*jan的帖子

UI自动化事件被引发两次

我无法从流程内部收听自动化事件.我在下面写了一个示例,其中有一个带有单个按钮的简单WPF应用程序.使用TreeScope:Descendants在窗口上为Invoke事件添加自动化处理程序.

public MainWindow()
{
    InitializeComponent();

    Loaded += OnLoaded;
}

private void OnLoaded(object sender, RoutedEventArgs routedEventArgs)
{
    IntPtr windowHandle = new WindowInteropHelper(this).Handle;
    Task.Run(() =>
    {
        var element = AutomationElement.FromHandle(windowHandle);

        Automation.AddAutomationEventHandler(InvokePattern.InvokedEvent, element, TreeScope.Descendants,
            (s, a) =>
            {
                Debug.WriteLine($"Invoked:{a.EventId.Id}");
            });

    });
}

private void button_Click(object sender, RoutedEventArgs e)
{
    Debug.WriteLine("Clicked!");
}
Run Code Online (Sandbox Code Playgroud)

当我点击按钮时,这就是我得到的:

Invoked:20009
Clicked!
Invoked:20009
Run Code Online (Sandbox Code Playgroud)

为什么Invoked事件被处理两次?

如果我删除Task.Run我只能得到它一次,但我已经阅读了几个你不应该从UI线程调用自动化代码的地方(例如https://msdn.microsoft.com/en-us/ library/ms788709(v = vs.110).aspx).在真实代码中这样做也是不切实际的.

我在此示例中使用了UIAComWrapper库,但是我对UIAutomationClient库的托管版和COM版都有相同的行为.

c# white-framework microsoft-ui-automation

7
推荐指数
1
解决办法
681
查看次数

vsto repurpose字体组合框

我正在尝试在PowerPoint(vsto加载项)中为我自己的对象重新调整内置字体选择器.我使用功能区xml成功地重新定位了常规命令(粗体,斜体等).

我有一个看起来像这样的测试:

<?xml version="1.0" encoding="UTF-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="Ribbon_Load">
 <ribbon>
   <tabs>
     <tab idMso="TabAddIns" label="Test">
       <group id="MyGroup"
              label="My Group">
         <comboBox idMso="Font" label="ComboBox1" onChange="ChangeCallback"/>
       </group>
     </tab>
   </tabs>
 </ribbon>
</customUI>
Run Code Online (Sandbox Code Playgroud)

如果我有一个常规而不是idMso,这个回调工作正常:

ChangeCallback(Office.IRibbonControl control, string text)
{
    Debug.WriteLine("Changed");
}
Run Code Online (Sandbox Code Playgroud)

当我使用idMso ="Font"时,回调停止工作,但是comboBox工作,我可以使用它来选择正常的字体.

我试过以下回调没有运气.

ChangeCallback(Office.IRibbonControl control, string text, ref bool cancelDefault)
{
     Debug.WriteLine("Changed");
}
Run Code Online (Sandbox Code Playgroud)

当我重新调用命令时,我把它放在xml的命令部分而不是功能区,但是不允许使用comboBox元素.

有关如何使其工作的任何想法?

powerpoint vsto office-interop

5
推荐指数
0
解决办法
84
查看次数

为什么只有一个隐藏节点的IRIS数据集具有良好的准确性?

我有一个带有反向传播训练器的神经网络的最小示例,可以在IRIS数据集上对其进行测试。我从7个隐藏节点开始,它运作良好。

我将隐藏层中的节点数减少到1(预计会失败),但是惊讶地发现精度提高了。

我在azure ml中设置了实验,只是为了验证这不是我的代码。那里同样,单个隐藏节点的准确性为98.3333%。

谁能向我解释这里发生了什么?

machine-learning backpropagation neural-network azure-machine-learning-studio

4
推荐指数
1
解决办法
2920
查看次数