Freigeben über


Window.SetTitleBar(UIElement) Methode

Definition

Aktiviert das Titelleistenverhalten für ein XAML-Element, wenn ExtendsContentIntoTitleBar ist true.

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)

Parameter

titleBar
UIElement

Das Element, das das Verhalten der Titelleiste unterstützen soll.

Beispiele

In diesem Beispiel wird gezeigt, wie Sie den Inhaltsbereich des Fensters erweitern und die Systemtitelleiste durch eine Grid ersetzen, die ein Symbol und einen Titeltext enthält.

<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
}

Hinweise

Rufen Sie diese Methode auf, um die Systemtitelleiste durch eine benutzerdefinierte Titelleisten-Benutzeroberfläche für Ihre App zu ersetzen. Das angegebene Element unterstützt dieselben Systeminteraktionen wie die Systemtitelleiste, einschließlich Ziehen, Doppelklicken zum Ändern der Größe und Klicken mit der rechten Maustaste, um das Systemmenü anzuzeigen. Daher wird die Zeigereingabe (Maus, Toucheingabe, Stift usw.) vom Element und seinen untergeordneten Elementen nicht mehr erkannt.

Der rechteckige Bereich, der vom angegebenen Element belegt wird, fungiert als Titelleiste für Zeigerzwecke, auch wenn das Element durch ein anderes Element blockiert wird oder das Element transparent ist.

Wenn Sie interaktive Elemente im Titelleistenbereich platzieren möchten, können Sie InputNonClientPointerSource-APIs verwenden. Ein Beispiel finden Sie auf der Titelleistenseite im WinUI-Katalogbeispiel .

Erweitern von Inhalten in die Titelleiste

Um eine benutzerdefinierte Titelleiste anzugeben, müssen Sie ExtendsContentIntoTitleBar auf festlegen, um true die Standardtitelleiste des Systems auszublenden. Wenn ExtendsContentIntoTitleBar ist false, hat der Aufruf von SetTitleBar keine Auswirkung. Ihr benutzerdefiniertes Titelleistenelement wird im Textkörper Ihres App-Fensters als normales UI-Element angezeigt und ruft nicht das Titelleistenverhalten ab.

Wenn Sie ExtendsContentIntoTitleBar auf true festlegen, aber nicht aufrufen SetTitleBar (oder mit einem null Argument aufrufenSetTitlebar), wird eine standardmäßige benutzerdefinierte Titelleiste bereitgestellt. Diese Standardtitelleiste ist ein direkter Ersatz der Systemtitelleiste in Position, Breite und Höhe. Wenn Sie eine spezielle Titelleiste benötigen, können Sie SetTitleBar mit einem "UIElement" aufrufen und einen Titelleistenbereich auf UIElementdieser Position, Breite und Höhe abrufen. Dies UIElement kann an einem beliebigen Ort innerhalb des Inhalts der App gehostet werden, nicht nur im Nicht-Clientbereich.

Titelleistenelement

Als Titelleiste kann nur ein einzelnes Element angegeben werden. Wenn mehrere Elemente erforderlich sind, können sie als untergeordnete Elemente eines einzelnen Containers (z. B. Grid oder StackPanel) angegeben werden.

Die benutzerdefinierte Titelleiste funktioniert am besten, wenn sie nicht tief in der App geschachtelt ist. Das tiefe Schachteln des UIElements in der XAML-Struktur kann zu unvorhersehbaren Layoutverhalten führen. Die Titelleiste ist immer rechteckig. Im Falle eines nicht rechteckigen UIElementRechtecks wird sein rechteckiges begrenzungsfähiges Rechteck für die Dimensionen der Titelleiste verwendet.

Farben

Eine benutzerdefinierte Titelleiste verwendet eine AppWindow-Titelleiste für die Implementierung. Daher können Sie AppWindowTitleBar-Design-APIs für Farben wie ButtonBackgroundColor, ButtonForegroundColorusw. verwenden.

Das ressourcenbasierte Theming, das in früheren Versionen (z. B WindowCaptionBackground. ) verwendet wurde, ist veraltet und hat keine Auswirkungen.

Gilt für:

Weitere Informationen