【发布时间】:2017-09-18 05:55:28
【问题描述】:
首先,我是 UWP 的新手,我已经在几乎所有地方(使用 Google 和 Stackoverflow)搜索了答案,但找不到我的问题的答案。
那么,问题来了:
我计划使用 Visual Studio 2017 和 Target Sdk: Creators Update 为 UWP 创建一个具有标签功能的像素绘画应用程序,例如 Edge(利用标题栏)。
当应用处于全屏状态时,我想将我制作的自定义标题栏移动到内容视图。
我想从这里移开(windows 标题栏,这只是按钮 XAML 代码,我不包括标签栏 XAML 代码,因为它是一个商业项目):
<Grid x:Name="btnMenuPlace1" Grid.Column="0">
<Grid x:Name="btnMenuPlaceContent" Background="{StaticResource SystemControlHighlightListAccentMediumBrush}">
<Button x:Name="btnMenu" FontFamily="Segoe MDL2 Assets" Content=""
Width="50" Height="50" Background="Transparent" Click="btnMenu_Click"/>
</Grid>
</Grid>
到这里(用户视图):
<Grid x:Name="btnMenuPlace2" Grid.Column="0">
</Grid>
这些 Grid 的两个父级都是另一个使用 Grid.ColumnDefinitions 的 Grid,如下所示:
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
这是我的 C# 代码:
private void WindowSizeChanged(object sender, WindowSizeChangedEventArgs e)
{
var appView = ApplicationView.GetForCurrentView();
if (appView.IsFullScreenMode)
{
Utility.RemoveChild(btnMenuPlaceContent);
btnMenuPlace2.Children.Add(btnMenuPlaceContent);
Utility.RemoveChild(tabBarPlaceContent);
tabBarPlace2.Children.Add(tabBarPlaceContent);
}
else
{
Utility.RemoveChild(btnMenuPlaceContent);
btnMenuPlace1.Children.Add(btnMenuPlaceContent);
Utility.RemoveChild(tabBarPlaceContent);
tabBarPlace1.Children.Add(tabBarPlaceContent);
}
e.Handled = true;
}
这是我的实用程序 RemoveChild 代码:
public static void RemoveChild(DependencyObject parent, UIElement child)
{
var parentAsPanel = VisualTreeHelper.GetParent(child);
if (parentAsPanel != null)
{
parentAsPanel.Children.Remove(child);
return;
}
var parentAsContentPresenter = parent as ContentPresenter;
if (parentAsContentPresenter != null)
{
if (parentAsContentPresenter.Content == child)
{
parentAsContentPresenter.Content = null;
}
return;
}
var parentAsContentControl = parent as ContentControl;
if (parentAsContentControl != null)
{
if (parentAsContentControl.Content == child)
{
parentAsContentControl.Content = null;
}
return;
}
}
这是我的应用进入全屏模式前的样子:
所以问题是每当应用程序进入全屏模式时,孩子确实会移动到新的父级,但按钮不存在,只有网格的背景颜色剩余,我无法点击其中任何一个(不是单击事件工作),看看:
当我切换回非全屏视图时,新选项卡上的进度条加载未显示。 我不知道我做错了 XAML 还是 C# 代码。
任何帮助将不胜感激。
P.S.我是印尼人,所以可能我的句子有问题,希望你明白我在说什么。
【问题讨论】:
标签: c# xaml uwp parent-child uwp-xaml