我有一个带有画布的Windows应用商店应用,用户可以使用InkManager进行绘制。在底部应用栏中有一些用于选择颜色,笔触粗细等的按钮。这些按钮通过显示包含例如颜色选择器的弹出元素来实现:
<Page.BottomAppBar>
<CommandBar IsSticky="True">
<AppBarButton ...>
<AppBarButton.Flyout>
<Flyout>
<ColorPicker .../>
</Flyout>
</AppBarButton.Flyout>
</AppBarButton>
</CommandBar>
</Page>
问题在于大多数用户(包括我自己)在一个小问题上继续绊倒: 如果点击按钮,则会打开弹出按钮,您可以选择颜色。然后,您想要开始绘制并在画布上移动手指(或手写笔),期望使用新颜色创建笔划。但是,触摸事件仅关闭弹出按钮。似乎flyout元素以某种方式捕获指针事件(尽管它不是UIElement)。
有没有办法防止这个问题?理想情况下,当您触摸画布时,弹出窗口将被关闭,但画布将处理相同的触摸事件,因此您可以立即开始绘制。
答案 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();
祝你好运!