1

我有一个带有画布的 Windows 应用商店应用程序,用户可以使用InkManager在该画布上绘制。在底部的应用程序栏中,有一些用于选择颜色、笔触粗细等的按钮。这些按钮是通过显示一个包含例如颜色选择器的弹出元素来实现的:

<Page.BottomAppBar>
    <CommandBar IsSticky="True">
        <AppBarButton ...>
            <AppBarButton.Flyout>
                <Flyout>
                    <ColorPicker .../>
                </Flyout>
            </AppBarButton.Flyout>
        </AppBarButton>
    </CommandBar>
</Page>

问题是大多数用户(包括我自己)总是被一个小问题绊倒:如果你点击按钮,弹出窗口就会打开,你可以选择一种颜色。然后你想开始绘图并在画布上移动你的手指(或手写笔),期望用新颜色创建一个笔触。但是,触摸事件只会关闭浮出控件。似乎弹出元素以某种方式捕获了指针事件(尽管它不是 UIElement)。

有什么办法可以防止这个问题吗?理想情况下,当您触摸画布时,浮出控件会关闭,但画布会处理相同的触摸事件,因此您可以立即开始绘制。

4

2 回答 2

0

在这里,试试这个:

var flyout = new SettingsFlyout();
Windows.UI.Xaml.Input.Pointer pointer = null;
flyout.PointerMoved += (s, e) => pointer = e.Pointer;
flyout.Unloaded += (s, e) => flyout.ReleasePointerCapture(pointer);

// cause it to hide
flyout.Hide();

祝你好运!

于 2014-05-19T21:05:55.893 回答
0

我认为 aFlyout可能使用Popup控件来显示其内容,因此如果您能找到它 - 您可以更改IsLightDismissEnabled属性。否则 - 我会简单地使用 aPopup而不是 aFlyout这样你就可以控制它的参数。

于 2014-05-19T07:12:45.040 回答