Window.SetTitleBar(UIElement) 方法

定义

当 为 trueExtendsContentIntoTitleBar,在 XAML 元素上启用标题栏行为。

public:
 virtual void SetTitleBar(UIElement ^ titleBar) = SetTitleBar;
void SetTitleBar(UIElement const& titleBar);
public void SetTitleBar(UIElement titleBar);
function setTitleBar(titleBar)
Public Sub SetTitleBar (titleBar As UIElement)

参数

titleBar
UIElement

用于支持标题栏行为的元素。

示例

此示例演示如何扩展窗口的内容区域,并将系统标题栏 Grid 替换为包含图标和标题文本的 。

<Window ... >
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="32"/>
            <RowDefinition/>
        </Grid.RowDefinitions>

        <Grid x:Name="AppTitleBar">
            <Image Source="Images/WindowIcon.png"
                   HorizontalAlignment="Left" 
                   Width="16" Height="16" 
                   Margin="8,0"/>
            <TextBlock x:Name="AppTitleTextBlock" Text="App title"
                       TextWrapping="NoWrap"
                       Style="{StaticResource CaptionTextBlockStyle}" 
                       VerticalAlignment="Center"
                       Margin="28,0,0,0"/>
        </Grid>

        <NavigationView Grid.Row="1">
            <!-- Page content -->
        </NavigationView>
    </Grid>
</Window>
public MainWindow()
{
    this.InitializeComponent();

    ExtendsContentIntoTitleBar = true;
    SetTitleBar(AppTitleBar);  // skip call to this api to get a default custom title bar
}

注解

调用此方法以将系统标题栏替换为应用的自定义标题栏 UI。 指定的元素支持与系统标题栏相同的系统交互,包括拖动、双击以调整大小以及右键单击以显示系统菜单。 因此,指针输入 (鼠标、触摸、笔等) 元素及其子元素不再识别。

指定元素占用的矩形区域充当指针的标题栏,即使该元素被另一个元素阻止,或者该元素是透明的。

如果要在标题栏区域中放置交互式元素,可以使用 InputNonClientPointerSource API。 有关示例,请参阅 WinUI 库示例中的标题栏页。

将内容扩展到标题栏中

若要指定自定义标题栏,必须将 ExtendsContentIntoTitleBar 设置为 true 以隐藏默认的系统标题栏。 如果 ExtendsContentIntoTitleBarfalse,则对 的 SetTitleBar 调用没有任何影响。 自定义标题栏元素在应用窗口的正文中显示为普通 UI 元素,不会获取标题栏行为。

如果将 ExtendsContentIntoTitleBar 设置为 true ,但不调用 SetTitleBar (或使用null参数) 调用 SetTitlebar ,则会提供默认的自定义标题栏。 此默认标题栏在位置、宽度和高度上直接替换系统标题栏。 如果需要专用标题栏,可以使用“UIElement”调用 SetTitleBar,并获取标题UIElement栏区域的位置、宽度和高度。 它可以 UIElement 托管在应用内容中的任何位置,而不仅仅是非工作区。

标题栏元素

只能将单个元素指定为标题栏。 如果需要多个元素,则可以将其指定为单个容器的子元素, (例如 GridStackPanel) 。

自定义标题栏在应用中未深入嵌套时效果最佳。 在 XAML 树中深入嵌套 UIElement 可能会导致不可预知的布局行为。 标题栏将始终为矩形。 对于非矩形 UIElement,其矩形边框将用于标题栏的尺寸。

颜色

自定义标题栏使用 AppWindow 标题栏 实现。 因此,可以将 AppWindowTitleBar 主题 API 用于 、ButtonForegroundColor、 等颜色ButtonBackgroundColor

早期版本(如) ) WindowCaptionBackground 中使用的基于资源 (主题已弃用,没有任何效果。

适用于

另请参阅