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:
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 MenuFlyoutItemfalse
ilişkili CTRL+X klavye hızlandırıcısı çağrılamıyor.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin