是否可以处理导致WinRT弹出窗口关闭的事件?

时间:2014-05-19 06:55:37

标签: windows-runtime windows-store-apps winrt-xaml windows-8.1 flyout

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

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

问题在于大多数用户(包括我自己)在一个小问题上继续绊倒: 如果点击按钮,则会打开弹出按钮,您可以选择颜色。然后,您想要开始绘制并在画布上移动手指(或手写笔),期望使用新颜色创建笔划。但是,触摸事件仅关闭弹出按钮。似乎flyout元素以某种方式捕获指针事件(尽管它不是UIElement)。

有没有办法防止这个问题?理想情况下,当您触摸画布时,弹出窗口将被关闭,但画布将处理相同的触摸事件,因此您可以立即开始绘制。

2 个答案:

答案 0 :(得分:0)

我认为Flyout可能会使用Popup控件来显示其内容,因此如果您能找到 - 您可以更改IsLightDismissEnabled属性。否则 - 我只是使用Popup代替Flyout,因此您可以控制其参数。

答案 1 :(得分: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();

祝你好运!