【问题标题】:What alternatives do I have to flyout/ContentDialog? (c#, xaml)我有什么替代方法可以弹出/ContentDialog? (c#, xaml)
【发布时间】:2019-01-08 15:39:20
【问题描述】:

我目前有一个程序,您可以在其中加载文本。

现在我创建了一个弹出弹出窗口/ContentDialog 的按钮,但我对它不满意,因为这限制了我想要实现的目标。

当我单击按钮时,它会打开一个浮出控件,该浮出控件会获得完整的焦点。这意味着当弹出框打开时我无法滚动到文本。如果我在弹出框外单击,弹出框就会消失。

我有与 ContentDialog 类似的问题。 当我单击按钮并弹出 ContentDialog 时,ContentDialog 后面的所有内容都会变成白色/灰色。此外,ContentDialog 不允许 ContentDialog 本身之外的任何焦点。

那我想要什么?

我希望当我单击按钮时会出现一个窗口。我应该能够自定义窗口(在其中写入文本并且它应该有一个按钮)。 在此窗口打开时,我希望能够在该窗口之外执行操作而无需关闭窗口。例如滚动浏览我加载的文本。

有什么我可以做到的吗?

【问题讨论】:

  • 使用自定义用户控件或有许多其他元素可以满足您的要求

标签: c# xaml uwp uwp-xaml flyout


【解决方案1】:

看看 Popup 类。这将允许您在应用程序窗口内的其他内容之上显示内容。它类似于 Flyout,但没有您不想要的所有内置 Flyout 行为。 Popup class documentation 有更多关于何时以及如何使用它的详细信息和评论。

这是一个没有样式的非常平淡的示例。

<Grid>
    <Popup x:Name="popup">
        <StackPanel>
            <TextBlock Text="Poppity pop pop" />
            <Button Click="ClosePopup_Click">Close</Button>
        </StackPanel>
    </Popup>
    <Button Click="OpenPopup_Click">Open Popup</Button>
</Grid>

private void OpenPopup_Click(object sender, RoutedEventArgs e)
{
    popup.IsOpen = true;
}

private void ClosePopup_Click(object sender, RoutedEventArgs e)
{
    popup.IsOpen = false;
}

Popup documentation中有一个稍微复杂一点的例子

【讨论】:

    【解决方案2】:

    我只是用我想要的东西隐藏和显示网格。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-21
      • 2018-10-22
      相关资源
      最近更新 更多