Window.SetTitleBar(UIElement) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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 UIElement
dieser 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 UIElement
Rechtecks 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
, ButtonForegroundColor
usw. verwenden.
Das ressourcenbasierte Theming, das in früheren Versionen (z. B WindowCaptionBackground
. ) verwendet wurde, ist veraltet und hat keine Auswirkungen.