Aracılığıyla paylaş


Klavye hızlandırıcıları

Klavye hızlandırıcıları, kullanıcıların uygulama kullanıcı arabiriminde doğrudan gezinmeden ortak eylemleri veya komutları çağırmaları için sezgisel bir yol sağlayarak Mac Catalyst ve Windows'taki .NET Çok Platformlu Uygulama Kullanıcı Arabirimi (.NET MAUI) uygulamalarınızın kullanılabilirliğini ve erişilebilirliğini geliştiren klavye kısayollarıdır.

Klavye hızlandırıcısı iki bileşenden oluşur:

  • Shift, Ctrl ve Alt içeren değiştiriciler.
  • Alfasayısal tuşlar ve özel tuşlar içeren tuşlar.

.NET MAUI'de klavye hızlandırıcıları menülerde gösterilen komutlarla ilişkilendirilir ve menü öğesiyle belirtilmelidir. Özel olarak, .NET MAUI klavye hızlandırıcıları Mac Catalyst ve Windows'taki menü çubuğundaki menü öğelerine ve Windows'daki bağlam menülerindeki menü öğelerine eklenebilir. Menü çubukları hakkında daha fazla bilgi için bkz . .NET MAUI masaüstü uygulamasında menü çubuğunu görüntüleme. Bağlam menüleri hakkında daha fazla bilgi için bkz . .NET MAUI masaüstü uygulamasında bağlam menüsü görüntüleme.

Aşağıdaki ekran görüntüleri, klavye hızlandırıcıları içeren menü çubuğu öğelerini ve bağlam menüsü öğelerini gösterir:

Screenshot of menu bar items that include keyboard accelerators.Screenshot of context menu items that include keyboard accelerators.

Klavye hızlandırıcısı sınıfı tarafından KeyboardAccelerator temsil edilir ve bu da bir MenuFlyoutItemiçin kısayol tuşunu temsil eder. KeyboardAccelerator sınıfı aşağıdaki özellikleri tanımlar:

  • Modifiers, türündeki KeyboardAcceleratorModifiersklavye kısayolu için Ctrl veya Shift gibi değiştirici değeri temsil eder.
  • Key, klavye kısayolu için tuş değerini temsil eden türündedir string?.

Bu özellikler nesneler tarafından BindableProperty desteklenir; bu da veri bağlamalarının hedefleri olabileceği anlamına gelir.

Numaralandırma özelliği KeyboardAcceleratorModifiers için Modifiers değer olarak kullanılan aşağıdaki üyeleri tanımlar:

  • None, değiştirici olmadığını gösterir.
  • Shift, Mac Catalyst ve Windows'da Shift değiştiricisini gösterir.
  • Ctrl, Mac Catalyst ve Windows'da Control değiştiricisini gösterir.
  • Alt, Mac Catalyst'te Option değiştiricisini ve Windows'da Menü değiştiricisini gösterir.
  • Cmd, Mac Catalyst'te Komut değiştiricisini gösterir.
  • Windows, Windows'ta Windows değiştiricisini gösterir.

Önemli

Klavye hızlandırıcıları Mac Catalyst ve Windows'da MenuBarItem ve Windows'da MenuFlyout bulunan nesnelere eklenebilirMenuFlyoutItem.

Aşağıdaki tabloda.NET MAUI'nin desteklediği klavye hızlandırıcısı biçimleri özetlenmiştir:

Platform Tek tuş Çok anahtarlı
Mac Catalyst Tek bir tuşla değiştiricisi olmayan klavye hızlandırıcıları. Örneğin, bir menü öğesiyle ilişkili eylemi çağırmak için F1 tuşunu kullanma. Tek bir tuşa sahip bir veya daha fazla değiştiriciye sahip klavye hızlandırıcıları. Örneğin, bir menü öğesiyle ilişkili eylemi çağırmak için CMD+SHIFT+S veya CMD+S kullanma.
Windows Tek bir tuşla değiştiricisi olan ve olmayan klavye hızlandırıcıları. Örneğin, bir menü öğesiyle ilişkili eylemi çağırmak için F1 tuşunu kullanma. Tek bir tuşa sahip bir veya daha fazla değiştiriciye sahip klavye hızlandırıcıları. Örneğin, bir menü öğesiyle ilişkili eylemi çağırmak için CTRL+SHIFT+F veya CTRL+F tuşlarını kullanın.

Klavye hızlandırıcısı oluşturma

AKeyboardAccelerator, koleksiyonuna eklenerek KeyboardAccelerators öğesine MenuFlyoutItem eklenebilir:

<MenuFlyoutItem Text="Cut"
                Clicked="OnCutMenuFlyoutItemClicked">
    <MenuFlyoutItem.KeyboardAccelerators>
        <KeyboardAccelerator Modifiers="Ctrl"
                             Key="X" />
    </MenuFlyoutItem.KeyboardAccelerators>
</MenuFlyoutItem>

Klavye hızlandırıcıları kodda da belirtilebilir:

cutMenuFlyoutItem.KeyboardAccelerators.Add(new KeyboardAccelerator
{
    Modifiers = KeyboardAcceleratorModifiers.Ctrl,
    Key = "X"
});

Klavye hızlandırıcısı değiştirici ve tuşa basıldığında, ile MenuFlyoutItem ilişkili eylem çağrılır.

Önemli

Koleksiyona birden çok KeyboardAccelerator nesne eklense MenuFlyoutItem.KeyboardAccelerators de, yalnızca koleksiyondaki ilk KeyboardAccelerator nesnenin kısayolu MenuFlyoutItemüzerinde görüntülenir. Ayrıca, Mac Catalyst'te yalnızca koleksiyondaki ilk KeyboardAccelerator klavye kısayolu ile ilişkili eylemin MenuFlyoutItem çağrılmasına neden olur. Ancak Windows'da, koleksiyondaki MenuFlyoutItem.KeyboardAccelerators tüm KeyboardAccelerator nesnelerin klavye kısayolları eylemin MenuFlyoutItem çağrılmasına neden olur.

Birden çok değiştirici belirtme

Her iki platformda KeyboardAccelerator birden çok değiştirici belirtilebilir:

<MenuFlyoutItem Text="Refresh"
                Command="{Binding RefreshCommand}">
    <MenuFlyoutItem.KeyboardAccelerators>
        <KeyboardAccelerator Modifiers="Shift,Ctrl"
                             Key="R" />
    </MenuFlyoutItem.KeyboardAccelerators>
</MenuFlyoutItem>

Eşdeğer C# kodu:

refreshMenuFlyoutItem.KeyboardAccelerators.Add(new KeyboardAccelerator
{
    Modifiers = KeyboardAcceleratorModifiers.Shift | KeyboardAcceleratorModifiers.Ctrl,
    Key = "R"
});

Platform başına klavye hızlandırıcıları belirtme

XAML'de işaretleme uzantısıyla OnPlatform platform başına farklı klavye hızlandırıcısı değiştiricileri ve tuşları belirtilebilir:

<MenuFlyoutItem Text="Change Theme"
                Command="{Binding ChangeThemeCommand}">
    <MenuFlyoutItem.KeyboardAccelerators>
        <KeyboardAccelerator Modifiers="{OnPlatform MacCatalyst=Cmd, WinUI=Windows}"
                             Key="{OnPlatform MacCatalyst=T, WinUI=C}" />
    </MenuFlyoutItem.KeyboardAccelerators>
</MenuFlyoutItem>

Eşdeğer C# kodu:

KeyboardAcceleratorModifiers modifier = KeyboardAcceleratorModifiers.None;
string key = string.Empty;

if (DeviceInfo.Current.Platform == DevicePlatform.MacCatalyst)
{
    modifier = KeyboardAcceleratorModifiers.Cmd;
    key = "T";
}
else if (DeviceInfo.Current.Platform == DevicePlatform.WinUI)
{
    modifier = KeyboardAcceleratorModifiers.Windows;
    key = "C";
}

myMenuFlyoutItem.KeyboardAccelerators.Add(new KeyboardAccelerator
{
    Modifiers = modifier,
    Key = key
});

Klavye hızlandırıcısında özel tuşlar kullanma

Windows'da özel anahtarlar bir dize sabiti veya tamsayı ile belirtilebilir. Sabitlerin ve tamsayıların listesi için içindeki tabloya VirtualKeybakın.

Dekont

Windows'da tek tuş hızlandırıcıları (tüm alfasayısal ve noktalama tuşları, Delete, F2, Ara Çubuğu, Esc, Multimedya Tuşu) ve çok tuşlu hızlandırıcılar (Ctrl+Shift+M) desteklenir. Ancak, Gamepad sanal anahtarları desteklenmez.

Mac Catalyst'te özel anahtarlar bir dize sabiti aracılığıyla belirtilebilir. Özel anahtarlara karşılık gelen metin giriş dizelerini temsil eden sabitlerin listesi için bkz . developer.apple.com özel anahtarlar için giriş dizeleri.

Aşağıdaki XAML'de özel bir tuş kullanan bir klavye hızlandırıcısı tanımlama örneği gösterilmektedir:

<MenuFlyoutItem Text="Help"
                Command="{Binding HelpCommand}">
    <MenuFlyoutItem.KeyboardAccelerators>
        <!-- Alternatively, 112 can be used to specify F1 on Windows -->
        <KeyboardAccelerator Modifiers="None"
                             Key="{OnPlatform MacCatalyst=UIKeyInputF1, WinUI=F1}" />
    </MenuFlyoutItem.KeyboardAccelerators>
</MenuFlyoutItem>

Bu örnekte klavye hızlandırıcısı, her iki platformda da bir sabit aracılığıyla belirtilen F1 tuşudur. Windows'da, 112 tamsayısı tarafından da belirtilebilir.

Klavye hızlandırıcıyı yerelleştirme

Klavye hızlandırıcısı tuşları bir .NET kaynak dosyası aracılığıyla yerelleştirilebilir. Yerelleştirilmiş anahtar daha sonra işaretleme uzantısı kullanılarak x:Static alınabilir:

<MenuFlyoutItem Text="Cut"
                Clicked="OnCutMenuFlyoutItemClicked">
    <MenuFlyoutItem.KeyboardAccelerators>
        <KeyboardAccelerator Modifiers="Ctrl"
                             Key="{x:Static local:AppResources.CutAcceleratorKey}" />
    </MenuFlyoutItem.KeyboardAccelerators>
</MenuFlyoutItem>

Daha fazla bilgi için bkz . Yerelleştirme.

Klavye hızlandırıcıyı devre dışı bırakma

bir MenuFlyoutItem devre dışı bırakıldığında, ilişkili klavye hızlandırıcısı da devre dışı bırakılır:

<MenuFlyoutItem Text="Cut"
                Clicked="OnCutMenuFlyoutItemClicked"
                IsEnabled="false">
    <MenuFlyoutItem.KeyboardAccelerators>
        <KeyboardAccelerator Modifiers="Ctrl"
                             Key="X" />
    </MenuFlyoutItem.KeyboardAccelerators>
</MenuFlyoutItem>

Bu örnekte özelliği IsEnabled olarak ayarlandığından MenuFlyoutItemfalseilişkili CTRL+X klavye hızlandırıcısı çağrılamıyor.