Címsor

A Címsor vezérlővel egyszerűbben hozhat létre egyéni címsort az alkalmazáshoz. A címsor egy Windows alkalmazás felhasználói felületének alapvető összetevője, amely ikonján és címén keresztül azonosítja az alkalmazást, a rendszer feliratozási gombjait tartalmazza, amelyek lehetővé teszik a felhasználó számára az ablak bezárását, maximalizálását, minimalizálását és visszaállítását, és lehetővé teszi, hogy a felhasználó húzza az ablakot a képernyőn.

Egyéni címsor használatával jobban integrálhatja a címsorterületet az alkalmazás felhasználói felületével. A címsor testre szabható, hogy megfeleljen az alkalmazás vizuális stílusának a Mica-témákkal. Tartalmazhat más releváns információkat, például a dokumentum címét vagy az aktuális állapotot (pl. "Szerkesztés", "Megtekintés", stb.). Emellett más WinUI 3-vezérlőket is üzemeltethet, például az AutoSuggestBox és a PersonPicture vezérlőket, amelyek egységes felhasználói élményt biztosítanak az alkalmazás számára.

Képernyőkép egy alkalmazásablakról egyéni címsorral

Ez a megfelelő vezérlő?

A Címsor vezérlőelemet akkor használja, ha a címsorterületet az alkalmazás felhasználói felületével szeretné integrálni olyan testreszabások használatával, mint a feliratok, a Mica-tartalmak és a WinUI-vezérlőkkel való integráció.

Anatómia

Alapértelmezés szerint a címsor csak a rendszer felirat gombjait jeleníti meg. A címsor más részei a társított tulajdonságbeállításoktól függően jelennek meg vagy rejtettek.

A címsor az alábbi területekre oszlik:

Képernyőkép a címsor vezérlőelem részeiről.

  • Vissza gomb:IsBackButtonEnabled, IsBackButtonVisible, BackRequested – Beépített vissza gomb a navigációhoz.
  • Ablaktábla váltógombja:IsPaneToggleButtonVisible, PaneToggleRequested – Ez a gomb a NavigationView vezérlővel együtt használható.
  • Bal fejléc:LeftHeader
  • Icon:IconSource
  • Cím:Cím
  • Alcím:Alcím
  • Tartalom:Tartalom
  • Jobb fejléc:RightHeader
  • Minimális húzási régió: Ez a terület a rendszer felirat gombjai mellett van fenntartva, így a felhasználónak mindig van helye arra, hogy megragadja az ablakot a húzáshoz.
  • Rendszerfelirat gombjai: Ezek a gombok nem részei a Címsor vezérlőelemnek – az RTL- vagy LTR-beállításoktól függően egyszerűen helyet foglal el a feliratgombok megjelenési helyén. A feliratgombokat és a testreszabásokat az AppWindowTitleBar kezeli.

Az elrendezés megfordul, amikor a FlowDirection értéke RightToLeft.

Címsor létrehozása

WinUI 3 Katalógus ikon A WinUI 3 Katalógus alkalmazás interaktív példákat tartalmaz a WinUI vezérlőire és funkcióira. Kérje le az alkalmazást a Microsoft Áruházból vagy keresse meg a forráskódot a GitHub webhelyen.

Ez a példa egy egyszerű címsort hoz létre, amely lecseréli a rendszer címsorát. Címe, ikonja és Mica téma szerint kialakított megjelenése van.

<Window
    ...  >
    <Window.SystemBackdrop>
        <MicaBackdrop Kind="Base"/>
    </Window.SystemBackdrop>

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>

        <TitleBar x:Name="SimpleTitleBar"
                  Title="My App">
            <TitleBar.IconSource>
                <FontIconSource Glyph="&#xF4AA;"/>
            </TitleBar.IconSource>
        </TitleBar>

        <!-- App content -->
        <Frame x:Name="RootFrame" Grid.Row="1"/>
    </Grid>
</Window>
public MainWindow()
{
    this.InitializeComponent();

    // Hides the default system title bar.
    ExtendsContentIntoTitleBar = true;
    // Replace system title bar with the WinUI TitleBar control. 
    SetTitleBar(SimpleTitleBar); 
}

Integráció a NavigationView szolgáltatással

A Navigációs nézet beépített háttérgombbal és panelváltógombbal rendelkezik. A Fluent tervezési útmutatója azt javasolja, hogy ezek a vezérlők egyéni címsor használata esetén kerüljenek a címsorba.

Ez a példa bemutatja, hogyan integrálható a Címsor vezérlőelem egy NavigationView vezérlővel a vissza gomb és az ablaktábla váltógombjának elrejtésével a navigációs nézetben, és hogyan használhatja helyette a címsor megfelelő gombjait.

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>

    <TitleBar Title="My App"
              IsBackButtonVisible="True"
              IsBackButtonEnabled="{x:Bind RootFrame.CanGoBack, Mode=OneWay}"
              BackRequested="TitleBar_BackRequested"
              IsPaneToggleButtonVisible="True"
              PaneToggleRequested="TitleBar_PaneToggleRequested">
    </TitleBar>

    <NavigationView x:Name="RootNavigationView" Grid.Row="1"
                    IsBackButtonVisible="Collapsed"
                    IsPaneToggleButtonVisible="False">
        <Frame x:Name="RootFrame" />
    </NavigationView>
</Grid>
private void TitleBar_BackRequested(TitleBar sender, object args)
{
    if (RootFrame.CanGoBack)
    {
        RootFrame.GoBack();
    }
}

private void TitleBar_PaneToggleRequested(TitleBar sender, object args)
{
    RootNavigationView.IsPaneOpen = !RootNavigationView.IsPaneOpen;
}

Húzási régiók testreszabása

A felhasználók áthelyeznek egy ablakot a címsáv húzásával. A Címsor vezérlőelem meghatározza, hogy a tartalomterület mely részeit húzhatják a felhasználók, és mely részek kapnak mutatóbemenetet, például kattintásokat.

A Windows App SDK 2.1.3-as verziótól kezdve a TitleBar vezérlő megvizsgálja a tartalom elemeit, és csak az interaktív vezérlőket, például gombokat, szövegdobozokat és kombinált listamezőket zárja ki a húzási régióból. Az üres terület és a nem interaktív elemek, például a TextBlock alapértelmezés szerint húzhatók, így nem kell módosítania a jelölést. A korábbi verziókban a tartalomterület üres területe akadályozhatta az ablak húzását. Ez az alapértelmezett viselkedés a(z) TitleBar_ContentDragRegions futásidejű kompatibilitási változás. További információ: RuntimeCompatibilityOptions.DisabledChanges.

Az alábbi példa a WinUI 3 katalógusmintán alapul. A címsor tartalma egy Grid, amely AutoSuggestBoxot és gombot tartalmaz. Mindkét vezérlő kattintható, és a mellettük lévő üres terület húzható.

<TitleBar x:Name="AppTitleBar" Title="My App">
    <TitleBar.Resources>
        <!-- Stretch the content across the available width of the title bar. -->
        <HorizontalAlignment x:Key="TitleBarContentHorizontalAlignment">Stretch</HorizontalAlignment>
    </TitleBar.Resources>
    <TitleBar.Content>
        <Grid ColumnSpacing="8">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="Auto" />
            </Grid.ColumnDefinitions>

            <AutoSuggestBox MaxWidth="580"
                            VerticalAlignment="Center"
                            PlaceholderText="Search..."
                            QueryIcon="Find" />

            <StackPanel x:Name="RightPanel"
                        Grid.Column="1"
                        Orientation="Horizontal"
                        Spacing="8"
                        VerticalAlignment="Center">
                <Button x:Name="StatusButton"
                        Content="Status"
                        Click="StatusButton_Click" />
            </StackPanel>
        </Grid>
    </TitleBar.Content>
</TitleBar>

Elem húzási viselkedésének felülírása

A címsor tartalmának egyik elemének alapértelmezett viselkedésének felülbírálásához állítsa be a TitleBar.IsDragRegion csatolt tulajdonságot. A tulajdonság egy null értéket is felvevő logikai érték.

Érték Behavior
Nincs beállítva (null) A Címsáv vezérlőelem dönt. Az interaktív vezérlők kattinthatók, más elemek pedig húzhatók.
True Az elem húzható, még akkor is, ha interaktív vezérlőről van szó. Az elemen történő mutatóbevitel áthelyezi az ablakot, így a felhasználók nem kattinthatnak az elemre.
False Az elem akkor is rákattintható, ha nem interaktív vezérlő.

A tulajdonságot egy panelen, például a StackPanelen állíthatja be:

  • Ha be Falsevan állítva, a panel teljes területe kattintható, beleértve a gyermekek közötti területet is.
  • Ha be van állítva True, a panel és a gyermekei húzhatók, kivéve azokat a gyermekelemeket, amelyeknél a tulajdonságot False értékre állítja.

Állítsa be a tulajdonságot a legkisebb elemre, amelyiknek szüksége van rá, hogy ne legyen a címsáv nagy területe véletlenül húzható vagy kattintható.

Ez a példa a formázási vezérlők egy csoportját egészében kattinthatóvá teszi, így a felhasználók nem húzhatják az ablakot, amikor a vezérlők közötti üres területre kattintanak.

<StackPanel Orientation="Horizontal" Spacing="8" TitleBar.IsDragRegion="False">
    <ComboBox PlaceholderText="Font" />
    <ComboBox PlaceholderText="Size" />
    <ToggleButton Content="Bold" />
</StackPanel>

A kódban hívja meg a SetIsDragRegion függvényt az érték beállításához, és az alapértelmezett viselkedéshez való visszatéréshez hívja meg a ClearValue elemet a(z) IsDragRegionProperty értékkel. Az érték olvasásához hívja meg a GetIsDragRegion parancsot. Visszaadja null , ha a tulajdonság nincs beállítva. Amikor az érték megváltozik, a Címsor vezérlőelem frissíti a húzási régiókat.

// Make the button draggable. Users can't click it.
TitleBar.SetIsDragRegion(StatusButton, true);

// Make the button clickable.
TitleBar.SetIsDragRegion(StatusButton, false);

// Clear the value so that the TitleBar control decides.
StatusButton.ClearValue(TitleBar.IsDragRegionProperty);

Húzási régiók frissítése a tartalom módosításakor

A Címsor vezérlőelem frissíti a húzási régiókat a tartalom beállításakor vagy cseréjekor, a tartalom betöltésekor, a címsor méretének módosításakor, valamint amikor egy elemen a TitleBar.IsDragRegion értéke megváltozik.

Ha a címsor tartalmának elemeit futtatáskor adja hozzá, távolítja el vagy méretezi át, a módosítás után hívja meg a RecomputeDragRegions metódust.

private void AddButton_Click(object sender, RoutedEventArgs e)
{
    RightPanel.Children.Insert(0, new Button { Content = "Extra" });

    // Update the drag regions so that the new button is clickable.
    AppTitleBar.RecomputeDragRegions();
}

Ha a címsor tartalma gyakran változik, helyette beállíthatja a(z) AutoRefreshDragRegions értékét erre: True. A TitleBar vezérlőelem ezután minden elrendezési ciklus után frissíti a húzási régiókat. Ez a beállítás hatással lehet a teljesítményre, ezért alapértelmezés szerint False.

<TitleBar x:Name="AppTitleBar" Title="My App" AutoRefreshDragRegions="True">
    <!-- Title bar content that changes at run time. -->
</TitleBar>

Note

A húzási régiók csak a mutatóbemenetet befolyásolják. Nem változtatják meg a billentyűzetfókuszt, és azt sem, hogy az UI-automatizálás ügyfelek, például a képernyőolvasók hogyan lépnek kapcsolatba a címsor elemeivel. Győződjön meg arról, hogy a címsor interaktív vezérlői továbbra is elérhetők a billentyűzettel.

Ha az alkalmazás nem használja a Címsor vezérlőelemet, az InputNonClientPointerSource osztály használatával állítsa be az egyéni címsor interaktív régióit. További információ: Interaktív tartalom.