Aracılığıyla paylaş


Koleksiyonlar ve listeler için bağlamsal komut

Birçok uygulama, kullanıcıların işleyebileceği listeler, kılavuzlar ve ağaç biçiminde içerik koleksiyonları içerir. Örneğin, kullanıcılar öğeleri silebilir, yeniden adlandırabilir, işaretleyebilir veya yenileyebilir. Bu makalede, bu tür eylemleri tüm giriş türleri için mümkün olan en iyi deneyimi sağlayacak şekilde uygulamak için bağlamsal komutların nasıl kullanılacağı gösterilmektedir.

Önemli API'ler: ICommand arabirimi, UIElement.ContextFlyout özelliği, INotifyPropertyChanged arabirimi

Sık Kullanılan komutunu gerçekleştirmek için çeşitli girişler kullanın

Tüm giriş türleri için komut oluşturma

Kullanıcılar çok çeşitli cihazlar ve girişler kullanarak bir Windows uygulamasıyla etkileşim kurabildiğinden, uygulamanız hem girişten bağımsız bağlam menüleri hem de girişe özgü hızlandırıcılar ile komutları kullanıma sunmalıdır. Her ikisi de dahil olmak, kullanıcının giriş veya cihaz türünden bağımsız olarak içerikte komutları hızlı bir şekilde çağırmasına olanak tanır.

Bu tabloda bazı tipik koleksiyon komutları ve bu komutları kullanıma sunma yolları gösterilmektedir.

Command Giriş-belirsiz Fare hızlandırıcısı Klavye hızlandırıcısı Dokunmatik hızlandırıcı
Öğeyi sil Bağlam menüsü Vurgula düğmesi DEL tuşu Silmek için kaydırın
Öğeyi işaretle Bağlam menüsü Vurgula düğmesi Ctrl+Shift+G Bayraklamak için kaydır
Verileri yenileme Bağlam menüsü Yok F5 tuşu Yenilemek için çekme
Öğeyi sık kullanılanlara ekleme Bağlam menüsü Vurgula düğmesi F, Ctrl+S Favorilere kaydır
  • Genel olarak, öğenin bağlam menüsünde bir öğenin tüm komutlarını kullanılabilir hale getirmeniz gerekir. Bağlam menülerine giriş türünden bağımsız olarak kullanıcılar erişebilir ve kullanıcının gerçekleştirebileceği tüm bağlamsal komutları içermelidir.

  • Sık erişilen komutlar için giriş hızlandırıcılarını kullanmayı göz önünde bulundurun. Giriş hızlandırıcıları, kullanıcının giriş cihazına göre hızlı bir şekilde eylem gerçekleştirmesine olanak tanır. Giriş hızlandırıcıları şunlardır:

    • Kaydırarak eylem (dokunmatik hızlandırıcı)
    • Verileri yenilemek için çekme (dokunmatik hızlandırıcı)
    • Klavye kısayolları (klavye hızlandırıcısı)
    • Erişim tuşları (klavye hızlandırıcısı)
    • Fare ve Kalem vurgulama düğmeleri (işaretçi hızlandırıcısı)

Uyarı

Kullanıcılar her tür cihazdan tüm komutlara erişebilmelidir. Örneğin, uygulamanızın komutları yalnızca vurgulama düğmesi işaretçi hızlandırıcıları aracılığıyla gösteriliyorsa, dokunma kullanıcıları bunlara erişemez. En azından tüm komutlara erişim sağlamak için bağlam menüsünü kullanın.

Örnek: PodcastObject veri modeli

Komut önerilerimizi göstermek için bu makale bir pod yayını uygulaması için pod yayınlarının listesini oluşturur. Örnek kod, kullanıcının belirli bir pod yayınını listeden "sık kullanılanlara" eklemesini sağlamayı gösterir.

Üzerinde çalışacağımız pod yayını nesnesinin tanımı şu şekildedir:

public class PodcastObject : INotifyPropertyChanged
{
    // The title of the podcast
    public String Title { get; set; }

    // The podcast's description
    public String Description { get; set; }

    // Describes if the user has set this podcast as a favorite
    public bool IsFavorite
    {
        get
        {
            return _isFavorite;
        }
        set
        {
            _isFavorite = value;
            OnPropertyChanged("IsFavorite");
        }
    }
    private bool _isFavorite = false;

    public event PropertyChangedEventHandler PropertyChanged;

    private void OnPropertyChanged(String property)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(property));
    }
}

PodcastObject'in, kullanıcı IsFavorite özelliğini değiştirdiğinde özellik değişikliklerine yanıt vermek için INotifyPropertyChanged uyguladığına dikkat edin.

Komutları ICommand arabirimiyle tanımlama

ICommand arabirimi, birden çok giriş türü için kullanılabilen bir komut tanımlamanıza yardımcı olur. Örneğin, iki farklı olay işleyicisinde bir delete komutu için aynı kodu yazmak yerine, bir kullanıcı Delete tuşuna bastığında ve kullanıcı bağlam menüsünde "Sil"e sağ tıkladığında için bir kod yazmak yerine, silme mantığınızı bir kez ICommand olarak uygulayabilir ve ardından farklı giriş türleri için kullanılabilir hale getirebilirsiniz.

"Sık Kullanılan" eylemini temsil eden ICommand'ı tanımlamamız gerekir. Bir pod yayınını sık kullanılanlara eklemek için komutun Execute yöntemini kullanacağız. Belirli pod yayını komutun parametresi aracılığıyla yürütme yöntemine sağlanacaktır. Bu parametre CommandParameter özelliği kullanılarak bağlanabilir.

public class FavoriteCommand: ICommand
{
    public event EventHandler CanExecuteChanged;

    public bool CanExecute(object parameter)
    {
        return true;
    }
    public void Execute(object parameter)
    {
        // Perform the logic to "favorite" an item.
        (parameter as PodcastObject).IsFavorite = true;
    }
}

Aynı komutu birden çok koleksiyon ve öğeyle kullanmak için, komutu sayfada veya uygulamada kaynak olarak depolayabilirsiniz.

<Application.Resources>
    <local:FavoriteCommand x:Key="favoriteCommand" />
</Application.Resources>

Komutunu yürütmek için Execute yöntemini çağırırsınız.

// Favorite the item using the defined command
var favoriteCommand = Application.Current.Resources["favoriteCommand"] as ICommand;
favoriteCommand.Execute(PodcastObject);

Çeşitli girişlere yanıt vermek için UserControl oluşturma

Bir öğe listeniz olduğunda ve bu öğelerin her biri birden çok girişe yanıt vermelidir. Öğe için bir UserControl tanımlayıp öğelerinizin bağlam menüsünü ve olay işleyicilerini tanımlamak için kullanarak kodunuzu basitleştirebilirsiniz.

Visual Studio'da UserControl oluşturmak için:

  1. Çözüm Gezgini'nde projeye sağ tıklayın. Bağlam menüsü görüntülenir.
  2. Yeni Öğe Ekle>... öğesini seçin
    Yeni Öğe Ekle iletişim kutusu görüntülenir.
  3. Öğe listesinden UserControl'i seçin. İstediğiniz adı verin ve Ekle'ye tıklayın. Visual Studio sizin için bir taslak UserControl oluşturur.

Pod yayını örneğimizde, her pod yayını bir listede görüntülenecek ve bir pod yayınını "Sık Kullanılan" yapmak için çeşitli yollar gösterilecektir. Kullanıcı pod yayınını "Sık Kullanılanlara" eklemek için aşağıdaki eylemleri gerçekleştirebilir:

  • Bağlam menüsünü çağırma
  • Klavye kısayollarını gerçekleştirme
  • Vurgulama düğmesini gösterme
  • Çekme hareketi gerçekleştirme

Bu davranışları kapsüllemek ve FavoriteCommand'ı kullanmak için listedeki bir pod yayınını temsil eden "PodcastUserControl" adlı yeni bir UserControl oluşturalım.

PodcastUserControl, PodcastObject alanlarını TextBlocks olarak görüntüler ve çeşitli kullanıcı etkileşimlerine yanıt verir. Bu makale boyunca PodcastUserControl'e başvuracak ve bunu genişleteceğiz.

PodcastUserControl.xaml

<UserControl
    x:Class="ContextCommanding.PodcastUserControl"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    IsTabStop="True" UseSystemFocusVisuals="True"
    >
    <Grid Margin="12,0,12,0">
        <StackPanel>
            <TextBlock Text="{x:Bind PodcastObject.Title, Mode=OneWay}" Style="{StaticResource TitleTextBlockStyle}" />
            <TextBlock Text="{x:Bind PodcastObject.Description, Mode=OneWay}" Style="{StaticResource SubtitleTextBlockStyle}" />
            <TextBlock Text="{x:Bind PodcastObject.IsFavorite, Mode=OneWay}" Style="{StaticResource SubtitleTextBlockStyle}"/>
        </StackPanel>
    </Grid>
</UserControl>

PodcastUserControl.xaml.cs

public sealed partial class PodcastUserControl : UserControl
{
    public static readonly DependencyProperty PodcastObjectProperty =
        DependencyProperty.Register(
            "PodcastObject",
            typeof(PodcastObject),
            typeof(PodcastUserControl),
            new PropertyMetadata(null));

    public PodcastObject PodcastObject
    {
        get { return (PodcastObject)GetValue(PodcastObjectProperty); }
        set { SetValue(PodcastObjectProperty, value); }
    }

    public PodcastUserControl()
    {
        this.InitializeComponent();

        // TODO: We will add event handlers here.
    }
}

PodcastUserControl'un PodcastObject'e DependencyProperty olarak başvuruda bulunduğuna dikkat edin. Bu, PodcastObjects'i PodcastUserControl'e bağlamamıza olanak tanır.

Bazı PodcastObject'leri oluşturduktan sonra PodcastObjects'i ListView'a bağlayarak pod yayınlarının listesini oluşturabilirsiniz. PodcastUserControl nesneleri PodcastObjects görselleştirmesini açıklar ve bu nedenle ListView'un ItemTemplate değeri kullanılarak ayarlanır.

MainPage.xaml

<ListView x:Name="ListOfPodcasts"
            ItemsSource="{x:Bind podcasts}">
    <ListView.ItemTemplate>
        <DataTemplate x:DataType="local:PodcastObject">
            <local:PodcastUserControl PodcastObject="{x:Bind Mode=OneWay}" />
        </DataTemplate>
    </ListView.ItemTemplate>
    <ListView.ItemContainerStyle>
        <!-- The PodcastUserControl will entirely fill the ListView item and handle tabbing within itself. -->
        <Style TargetType="ListViewItem" BasedOn="{StaticResource ListViewItemRevealStyle}">
            <Setter Property="HorizontalContentAlignment" Value="Stretch" />
            <Setter Property="Padding" Value="0"/>
            <Setter Property="IsTabStop" Value="False"/>
        </Style>
    </ListView.ItemContainerStyle>
</ListView>

Bağlam menüleri oluşturma

Bağlam menüleri, kullanıcı istediğinde komutların veya seçeneklerin listesini görüntüler. Bağlam menüleri, ekli öğeleriyle ilgili bağlamsal komutlar sağlar ve genellikle bu öğeye özgü ikincil eylemler için ayrılır.

Öğede bağlam menüsünü gösterme

Kullanıcı şu "bağlam eylemlerini" kullanarak bağlam menülerini çağırabilir:

Veri Girişi Bağlam İşlevi
Mouse Sağ tıklama
Keyboard Shift+F10, Menü düğmesi
Touch Öğeye uzun basma
Kalem Silindir (varil) düğmesine basma, öğeye uzun basma
Oyun kumandası Menü düğmesi

Kullanıcı giriş türünden bağımsız olarak bir bağlam menüsü açabildiğinden, bağlam menünüzün liste öğesi için kullanılabilen tüm bağlamsal komutları içermesi gerekir.

ContextFlyout

UIElement sınıfı tarafından tanımlanan ContextFlyout özelliği, tüm giriş türleriyle çalışan bir bağlam menüsü oluşturmayı kolaylaştırır. MenuFlyout veya CommandBarFlyout kullanarak bağlam menünüzü temsil eden bir açılır menü sağlarsınız ve kullanıcı yukarıda tanımlandığı gibi bir "bağlam eylemi" gerçekleştirdiğinde, öğeye karşılık gelen MenuFlyout veya CommandBarFlyout görüntülenir.

Menü ve bağlam menüsü senaryolarını tanımlamada yardım için menülere ve bağlam menülerine bakabilirsiniz ve menü açılır menüsü ile komut çubuğu açılır menüsü hangi durumlarda kullanılacağına dair rehberlik.

Bu örnekte MenuFlyout kullanacağız ve PodcastUserControl'e ContextFlyout ekleyerek başlayacağız. ContextFlyout olarak belirtilen MenuFlyout, bir podcast'i favorilere eklemek için tek bir öğe içerir. Bu MenuFlyoutItem öğesinin, Yukarıda tanımlanan favoriteCommand öğesini, CommandParameter'ı PodcastObject'e bağlı olarak kullandığına dikkat edin.

PodcastUserControl.xaml

<UserControl>
    <UserControl.ContextFlyout>
        <MenuFlyout>
            <MenuFlyoutItem Text="Favorite" Command="{StaticResource favoriteCommand}" CommandParameter="{x:Bind PodcastObject, Mode=OneWay}" />
        </MenuFlyout>
    </UserControl.ContextFlyout>
    <Grid Margin="12,0,12,0">
        <!-- ... -->
    </Grid>
</UserControl>

Bağlam eylemlerini yanıtlamak için ContextRequested olayını da kullanabileceğinizi unutmayın. ContextFlyout belirtilmişse, ContextRequested olayı tetiklenmez.

Giriş hızlandırıcıları oluşturma

Koleksiyondaki her öğenin tüm bağlamsal komutları içeren bir bağlam menüsü olması gerekir, ancak kullanıcıların daha küçük bir sık gerçekleştirilen komut kümesini hızla gerçekleştirmesini sağlamak isteyebilirsiniz. Örneğin, bir posta uygulamasında bağlam menüsünde görünen Yanıtla, Arşivle, Klasöre Taşı, Bayrak Ayarla ve Sil gibi ikincil komutlar olabilir, ancak en yaygın komutlar Sil ve Bayraktır. Hangi komutların en yaygın olduğunu belirledikten sonra, kullanıcının bu komutları gerçekleştirmesini kolaylaştırmak için giriş tabanlı hızlandırıcıları kullanabilirsiniz.

Pod yayını uygulamasında, sık gerçekleştirilen komut "Sık Kullanılan" komutudur.

Klavye hızlandırıcıları

Kısayollar ve doğrudan tuş işleme

Eylem gerçekleştirmek için Ctrl ve F tuşlarına basın

İçerik türüne bağlı olarak, bir eylem gerçekleştirmesi gereken belirli tuş bileşimlerini tanımlayabilirsiniz. Örneğin, bir e-posta uygulamasında, seçilen e-postayı silmek için DEL anahtarı kullanılabilir. Bir pod yayını uygulamasında, Ctrl+S veya F tuşları daha sonra bir pod yayınını sık kullanılanlara ekleyebilirsiniz. Bazı komutların DELETE için yaygın ve iyi bilinen DEL gibi klavye kısayolları olsa da, diğer komutların uygulamaya veya etki alanına özgü kısayolları vardır. Mümkünse iyi bilinen kısayolları kullanın veya kullanıcıya kısayol komutunu öğretmek için bir araç ipucunda anımsatıcı metni sağlamayı göz önünde bulundurun.

Kullanıcı KeyDown olayını kullanarak bir tuşa bastığında uygulamanız yanıt verebilir. Genel olarak kullanıcılar, uygulamanın tuşu bırakana kadar beklemek yerine tuşa ilk bastığında yanıt vermesini bekler.

Bu örnek, kullanıcı Ctrl+S veya F tuşlarına bastığında bir pod yayınını sık kullanılanlara eklemek için Pod YayınıUserControl'e KeyDown işleyicisinin nasıl ekleneceğini gösterir. Öncekiyle aynı komutu kullanır.

PodcastUserControl.xaml.cs

// Respond to the F and Ctrl+S keys to favorite the focused item.
protected override void OnKeyDown(KeyRoutedEventArgs e)
{
    var ctrlState = CoreWindow.GetForCurrentThread().GetKeyState(VirtualKey.Control);
    var isCtrlPressed = (ctrlState & CoreVirtualKeyStates.Down) == CoreVirtualKeyStates.Down || (ctrlState & CoreVirtualKeyStates.Locked) == CoreVirtualKeyStates.Locked;

    if (e.Key == Windows.System.VirtualKey.F || (e.Key == Windows.System.VirtualKey.S && isCtrlPressed))
    {
        // Favorite the item using the defined command
        var favoriteCommand = Application.Current.Resources["favoriteCommand"] as ICommand;
        favoriteCommand.Execute(PodcastObject);
    }
}

Fare hızlandırıcıları

Düğmeyi göstermek için fareyi öğenin üzerine getirin

Kullanıcılar sağ tıklama bağlam menülerini bilir, ancak kullanıcıların fareye tek bir tıklamayla ortak komutlar gerçekleştirmesini sağlamak isteyebilirsiniz. Bu deneyimi etkinleştirmek için koleksiyon öğenizin tuvaline ayrılmış düğmeler ekleyebilirsiniz. Hem kullanıcıları fare kullanarak hızlı hareket etme gücü vermek hem de görsel dağınıklığı en aza indirmek için, bu düğmeleri yalnızca kullanıcının işaretçisi belirli bir liste öğesi içinde olduğunda göstermeyi seçebilirsiniz.

Bu örnekte, Sık Kullanılanlar komutu, doğrudan PodcastKullanıcıDenetiği içinde tanımlanan bir düğmeyle temsil edilir. Bu örnekteki düğmenin daha önce olduğu gibi FavoriteCommand komutunu kullandığını unutmayın. Bu düğmenin görünürlüğünü değiştirmek için, işaretçi denetime girdiğinde ve denetimden çıktığında görsel durumlar arasında geçiş yapmak için VisualStateManager'ı kullanabilirsiniz.

PodcastUserControl.xaml

<UserControl>
    <UserControl.ContextFlyout>
        <!-- ... -->
    </UserControl.ContextFlyout>
    <Grid Margin="12,0,12,0">
        <VisualStateManager.VisualStateGroups>
            <VisualStateGroup x:Name="HoveringStates">
                <VisualState x:Name="HoverButtonsShown">
                    <VisualState.Setters>
                        <Setter Target="hoverArea.Visibility" Value="Visible" />
                    </VisualState.Setters>
                </VisualState>
                <VisualState x:Name="HoverButtonsHidden" />
            </VisualStateGroup>
        </VisualStateManager.VisualStateGroups>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="Auto" />
        </Grid.ColumnDefinitions>
        <StackPanel>
            <TextBlock Text="{x:Bind PodcastObject.Title, Mode=OneWay}" Style="{StaticResource TitleTextBlockStyle}" />
            <TextBlock Text="{x:Bind PodcastObject.Description, Mode=OneWay}" Style="{StaticResource SubtitleTextBlockStyle}" />
            <TextBlock Text="{x:Bind PodcastObject.IsFavorite, Mode=OneWay}" Style="{StaticResource SubtitleTextBlockStyle}"/>
        </StackPanel>
        <Grid Grid.Column="1" x:Name="hoverArea" Visibility="Collapsed" VerticalAlignment="Stretch">
            <AppBarButton Icon="OutlineStar" Label="Favorite" Command="{StaticResource favoriteCommand}" CommandParameter="{x:Bind PodcastObject, Mode=OneWay}" IsTabStop="False" VerticalAlignment="Stretch"  />
        </Grid>
    </Grid>
</UserControl>

Fare öğeye girdiğinde ve öğeden çıktığında vurgulama düğmeleri görünmelidir ve kaybolmalıdır. Fare olaylarına yanıt vermek için PodcastUserControl üzerindeki PointerEntered ve PointerExited olaylarını kullanabilirsiniz.

PodcastUserControl.xaml.cs

protected override void OnPointerEntered(PointerRoutedEventArgs e)
{
    base.OnPointerEntered(e);

    // Only show hover buttons when the user is using mouse or pen.
    if (e.Pointer.PointerDeviceType == Windows.Devices.Input.PointerDeviceType.Mouse || e.Pointer.PointerDeviceType == Windows.Devices.Input.PointerDeviceType.Pen)
    {
        VisualStateManager.GoToState(this, "HoverButtonsShown", true);
    }
}

protected override void OnPointerExited(PointerRoutedEventArgs e)
{
    base.OnPointerExited(e);

    VisualStateManager.GoToState(this, "HoverButtonsHidden", true);
}

Vurgulama durumunda görüntülenen düğmelere yalnızca işaretçi giriş türü aracılığıyla erişilebilir. Bu düğmeler işaretçi girişiyle sınırlı olduğundan, düğmenin simgesinin etrafındaki doldurmayı azaltmayı veya kaldırmayı seçerek işaretçi girişi için optimize edebilirsiniz. Bunu yapmayı seçerseniz kalem ve fare ile kullanılabilir durumda kalmak için düğme ayak izinin en az 20x20px olduğundan emin olun.

Dokunmatik hızlandırıcılar

Swipe

Komutu göstermek için bir öğeyi çekme

Çekme komutu, dokunmatik cihazlardaki kullanıcıların dokunma kullanarak ortak ikincil eylemler gerçekleştirmesini sağlayan bir dokunmatik hızlandırıcıdır. Swipe özelliği, Çekerek Silme veya Çekerek-Çağırma gibi yaygın eylemleri kullanarak dokunmatik kullanıcıların içerikle hızlı ve doğal bir şekilde etkileşim kurmasını sağlar. Daha fazla bilgi edinmek için çekme komutu makalesine bakın.

Çekmeyi koleksiyonunuzla tümleştirmek için iki bileşene ihtiyacınız vardır: komutları barındıran SwipeItems; ve öğeyi sarmalayan ve çekme etkileşimini sağlayan bir SwipeControl.

SwipeItems, PodcastUserControl'de bir Kaynak olarak tanımlanabilir. Bu örnekte, SwipeItems bir öğeyi sık kullanılanlara eklemek için bir komut içerir.

<UserControl.Resources>
    <SymbolIconSource x:Key="FavoriteIcon" Symbol="Favorite"/>
    <SwipeItems x:Key="RevealOtherCommands" Mode="Reveal">
        <SwipeItem IconSource="{StaticResource FavoriteIcon}" Text="Favorite" Background="Yellow" Invoked="SwipeItem_Invoked"/>
    </SwipeItems>
</UserControl.Resources>

SwipeControl öğeyi sarmalar ve kullanıcının çekme hareketini kullanarak öğeyle etkileşim kurmasına olanak tanır. SwipeControl'un, SwipeItems öğesine RightItems olarak referans içerdiğine dikkat edin. Kullanıcı sağdan sola doğru çekildiğinde Sık Kullanılan öğesi gösterilir.

<SwipeControl x:Name="swipeContainer" RightItems="{StaticResource RevealOtherCommands}">
   <!-- The visual state groups moved from the Grid to the SwipeControl, since the SwipeControl wraps the Grid. -->
   <VisualStateManager.VisualStateGroups>
       <VisualStateGroup x:Name="HoveringStates">
           <VisualState x:Name="HoverButtonsShown">
               <VisualState.Setters>
                   <Setter Target="hoverArea.Visibility" Value="Visible" />
               </VisualState.Setters>
           </VisualState>
           <VisualState x:Name="HoverButtonsHidden" />
       </VisualStateGroup>
   </VisualStateManager.VisualStateGroups>
   <Grid Margin="12,0,12,0">
       <Grid.ColumnDefinitions>
           <ColumnDefinition Width="*" />
           <ColumnDefinition Width="Auto" />
       </Grid.ColumnDefinitions>
       <StackPanel>
           <TextBlock Text="{x:Bind PodcastObject.Title, Mode=OneWay}" Style="{StaticResource TitleTextBlockStyle}" />
           <TextBlock Text="{x:Bind PodcastObject.Description, Mode=OneWay}" Style="{StaticResource SubtitleTextBlockStyle}" />
           <TextBlock Text="{x:Bind PodcastObject.IsFavorite, Mode=OneWay}" Style="{StaticResource SubtitleTextBlockStyle}"/>
       </StackPanel>
       <Grid Grid.Column="1" x:Name="hoverArea" Visibility="Collapsed" VerticalAlignment="Stretch">
           <AppBarButton Icon="OutlineStar" Command="{StaticResource favoriteCommand}" CommandParameter="{x:Bind PodcastObject, Mode=OneWay}" IsTabStop="False" LabelPosition="Collapsed" VerticalAlignment="Stretch"  />
       </Grid>
   </Grid>
</SwipeControl>

Kullanıcı Sık Kullanılan komutunu çağırmak için kaydırdığında, Çağırılan yöntemi çalıştırılır.

private void SwipeItem_Invoked(SwipeItem sender, SwipeItemInvokedEventArgs args)
{
    // Favorite the item using the defined command
    var favoriteCommand = Application.Current.Resources["favoriteCommand"] as ICommand;
    favoriteCommand.Execute(PodcastObject);
}

Yenilemek için çekme

Yenilemek için çek, kullanıcının daha fazla veri almak için dokunma parmağıyla bir veri koleksiyonunu aşağı çekmesine olanak tanır. Daha fazla bilgi edinmek için yenilemek için çek makalesine bakın.

Kalem hızlandırıcıları

Kalem giriş türü, işaretçi girişinin kesinliğini sağlar. Kullanıcılar, kalem tabanlı hızlandırıcıları kullanarak bağlam menülerini açma gibi yaygın eylemleri gerçekleştirebilir. Bağlam menüsünü açmak için kullanıcılar, varil düğmesine basılı olarak ekrana dokunabilir veya içeriğe uzun basabilir. Kullanıcılar, araç ipuçlarını görüntüleme gibi kullanıcı arabirimini daha iyi anlamak veya fareye benzer ikincil vurgulama eylemlerini ortaya çıkarmak için kalemi içeriğin üzerine getirmek için de kullanabilir.

Uygulamanızı kalem girişi için iyileştirmek için kalem ve ekran kalemi etkileşimi makalesine bakın.

Recommendations

  • Kullanıcıların tüm Windows cihaz türlerinden tüm komutlara erişebildiğinden emin olun.
  • Bir koleksiyon öğesi için kullanılabilen tüm komutlara erişim sağlayan bir bağlam menüsü ekleyin.
  • Sık kullanılan komutlar için giriş hızlandırıcıları sağlayın.
  • Komutları uygulamak için ICommand arabirimini kullanın.