无法单击 UWP 自定义标题栏按钮
UWP Custom TitleBar button could not be clicked
我有一个自定义的 TitleBar,其视图已扩展到标题栏,这意味着我已经这样做了:
Windows.ApplicationModel.Core.CoreApplication.GetCurrentView().TitleBar.ExtendViewIntoTitleBar = true;
从下图中可以看出,它只是一个后退按钮(当您导航到其他页面时可见)和一个 TextBlock
。但是,我无法单击该按钮。这是为什么?我已将标题栏放在 NavigationView
上方。而且我也找不到那个按钮的Background
。我已将其设置为透明,它应该显示其下方的颜色,但事实并非如此。我也试过改变它周围元素的背景,但我的努力没有奏效。
我贴的图片只是window变窄时的例子,window变大时也是一样。
这是那个主页XAML的结构,source code here:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<NavigationView
x:Name="MainNavigationView"
Grid.Row="1"
IsBackButtonVisible="Collapsed"
IsBackEnabled="True"
Style="{StaticResource MainNavigationViewStyle}"
TabNavigation="Cycle">
<Frame
x:Name="NaviFrame"
IsNavigationStackEnabled="True"
Navigated="NaviFrame_Navigated" />
</NavigationView>
<Grid
x:Name="AppTitleBar"
Height="32"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Background="Transparent">
<Border
x:Name="AppTitleBorder"
Width="{x:Bind MainNavigationView.OpenPaneLength}"
HorizontalAlignment="Left"
VerticalAlignment="Stretch"
Background="Transparent" />
<StackPanel Orientation="Horizontal">
<Button
x:Name="BackButton"
Background="Transparent"
Click="BackButton_Click"
Style="{StaticResource BackButtonStyle}"
Visibility="Collapsed" />
<TextBlock
x:Name="AppTitle"
Height="{x:Bind AppTitleBar.Height, Mode=OneWay}"
Padding="10,8"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Style="{StaticResource CaptionTextBlockStyle}"
Text="{x:Bind appmodel:Package.Current.DisplayName}"
Visibility="Collapsed" />
</StackPanel>
</Grid>
<Button
x:Name="FakeTogglePaneButton"
Grid.Row="1"
Background="{StaticResource MinimalTitleBarColor}"
Click="FakeTogglePaneButton_Click"
Style="{ThemeResource PaneToggleButtonStyle}"
Visibility="Collapsed" />
<local:MediaControl
x:Name="MainMediaControl"
Grid.Row="2"
Mode="Main" />
</Grid>
在 Page_Loaded
方法中,您已将 AppTitleBar
网格设置为应用程序的标题栏。那就是问题所在。您设置为应用程序标题栏的 FrameworkElement
应该是 non-responsive,因为通常您通过拖动标题栏来移动应用程序 window。
在响应部分下方放置一个Rectangle
或Border
,并将Rectangle
或Border
设置为标题栏。
您可以查看 this blog 了解更多详情。
我有一个自定义的 TitleBar,其视图已扩展到标题栏,这意味着我已经这样做了:
Windows.ApplicationModel.Core.CoreApplication.GetCurrentView().TitleBar.ExtendViewIntoTitleBar = true;
从下图中可以看出,它只是一个后退按钮(当您导航到其他页面时可见)和一个 TextBlock
。但是,我无法单击该按钮。这是为什么?我已将标题栏放在 NavigationView
上方。而且我也找不到那个按钮的Background
。我已将其设置为透明,它应该显示其下方的颜色,但事实并非如此。我也试过改变它周围元素的背景,但我的努力没有奏效。
我贴的图片只是window变窄时的例子,window变大时也是一样。
这是那个主页XAML的结构,source code here:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<NavigationView
x:Name="MainNavigationView"
Grid.Row="1"
IsBackButtonVisible="Collapsed"
IsBackEnabled="True"
Style="{StaticResource MainNavigationViewStyle}"
TabNavigation="Cycle">
<Frame
x:Name="NaviFrame"
IsNavigationStackEnabled="True"
Navigated="NaviFrame_Navigated" />
</NavigationView>
<Grid
x:Name="AppTitleBar"
Height="32"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Background="Transparent">
<Border
x:Name="AppTitleBorder"
Width="{x:Bind MainNavigationView.OpenPaneLength}"
HorizontalAlignment="Left"
VerticalAlignment="Stretch"
Background="Transparent" />
<StackPanel Orientation="Horizontal">
<Button
x:Name="BackButton"
Background="Transparent"
Click="BackButton_Click"
Style="{StaticResource BackButtonStyle}"
Visibility="Collapsed" />
<TextBlock
x:Name="AppTitle"
Height="{x:Bind AppTitleBar.Height, Mode=OneWay}"
Padding="10,8"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Style="{StaticResource CaptionTextBlockStyle}"
Text="{x:Bind appmodel:Package.Current.DisplayName}"
Visibility="Collapsed" />
</StackPanel>
</Grid>
<Button
x:Name="FakeTogglePaneButton"
Grid.Row="1"
Background="{StaticResource MinimalTitleBarColor}"
Click="FakeTogglePaneButton_Click"
Style="{ThemeResource PaneToggleButtonStyle}"
Visibility="Collapsed" />
<local:MediaControl
x:Name="MainMediaControl"
Grid.Row="2"
Mode="Main" />
</Grid>
在 Page_Loaded
方法中,您已将 AppTitleBar
网格设置为应用程序的标题栏。那就是问题所在。您设置为应用程序标题栏的 FrameworkElement
应该是 non-responsive,因为通常您通过拖动标题栏来移动应用程序 window。
在响应部分下方放置一个Rectangle
或Border
,并将Rectangle
或Border
设置为标题栏。
您可以查看 this blog 了解更多详情。