C# 使用Xaml添加弹出控件将移动页面上的其他控件

C# 使用Xaml添加弹出控件将移动页面上的其他控件,c#,xaml,windows-phone-8.1,C#,Xaml,Windows Phone 8.1,当我像这样将弹出窗口添加到XAML时 <Grid> ...other controls <Popup x:Name="popup" Width="200" Height="200" > </Popup> </Grid> 有人知道我如何在XAML中完成同样的事情吗?使用弹出窗口有两种方法。它可以是覆盖控件或它可以在布局中定义(或添加到树中),它将像标准控件一样占用空间 为了有一个覆盖弹出窗口,但避免在代码隐藏和u中定义布局,通常

当我像这样将弹出窗口添加到XAML时

<Grid>
   ...other controls
   <Popup x:Name="popup" Width="200" Height="200" >

   </Popup>
</Grid>

有人知道我如何在XAML中完成同样的事情吗?

使用
弹出窗口有两种方法。它可以是覆盖控件它可以在布局中定义(或添加到树中),它将像标准控件一样占用空间

为了有一个覆盖弹出窗口,但避免在代码隐藏和u中定义布局,通常使用两种技术:

1) 将弹出内容定义为单独的用户控件。您的事件处理程序(如
Feedback\u Click
)现在将在
UserControl

var p = new Popup { Child = new MyControl() };
p.IsOpen = true;

2) 在
ResourceDictionary

中的xaml中简单地定义弹出内容在我的计算机上尝试此操作时,它在运行时的行为是正确的。在设计时间内,它占据了空间。这也是你正在经历的行为吗?似乎在XAML中使用了
网格
,在代码隐藏中使用了
堆栈面板
。作为提醒,这些容器的行为非常不同。我尝试创建一个用户控件,但再次在页面中使用它时,它会占用空间。我希望它是无形的,直到它的时间来打开它,覆盖一切。我是否在codebehind中初始化用户控件并从代码中打开或关闭它?@erotavlas Yes,如代码示例所示。UserControl的内容只是为了使您不必在代码隐藏中声明弹出窗口的布局,但弹出窗口应该在代码隐藏中创建。
var p = new Popup { Child = new MyControl() };
p.IsOpen = true;