Aracılığıyla paylaş


Xamarin.Mac'te standart denetimler

Bu makale, Xamarin.Mac uygulamasında düğmeler, etiketler, metin alanları, onay kutuları ve kesimli denetimler gibi standart AppKit denetimleriyle çalışmayı kapsar. Bunları Arabirim Oluşturucusu ile bir arabirime eklemeyi ve kodda bunlarla etkileşim kurmayı açıklar.

Xamarin.Mac uygulamasında C# ve .NET ile çalışırken, ve Xcode'da Objective-C çalışan bir geliştiricinin sahip olduğu AppKit Denetimlerine erişebilirsiniz. Xamarin.Mac doğrudan Xcode ile tümleştirildiği için, Appkit Denetimlerinizi oluşturmak ve bakımını yapmak için Xcode'un Arabirim Oluşturucusu'nu kullanabilirsiniz (veya isteğe bağlı olarak bunları doğrudan C# kodunda oluşturabilirsiniz).

AppKit Denetimleri, Xamarin.Mac uygulamanızın Kullanıcı Arabirimini oluşturmak için kullanılan Kullanıcı Arabirimi Öğeleridir. Düğmeler, Etiketler, Metin Alanları, Onay Kutuları ve Kesimli Denetimler gibi öğelerden oluşur ve kullanıcı bunları işlendiğinde anlık eylemlere veya görünür sonuçlara neden olur.

Örnek uygulama ana ekranı

Bu makalede, Xamarin.Mac uygulamasında AppKit Denetimleri ile çalışmanın temellerini ele alacağız. Bu makalede kullanacağımız temel kavramları ve teknikleri kapsarken öncelikle Hello, Mac makalesi, özellikle Xcode ve Interface Builder'a Giriş ve Çıkışlar ve Eylemler bölümleriyle çalışmanız önemle önerilir.

Xamarin.Mac Internals belgesinin C# sınıflarını / yöntemlerini kullanıma almaObjective-Cbölümüne de göz atmak isteyebilirsiniz. Bu belge, C# sınıflarınızı nesnelere ve UI Öğelerine Objective-C bağlamada kullanılan ve Export komutlarını açıklar.Register

Denetimlere ve Görünümlere Giriş

macOS (eski adıyla Mac OS X), AppKit Framework aracılığıyla standart bir Kullanıcı Arabirimi denetimleri kümesi sağlar. Düğmeler, Etiketler, Metin Alanları, Onay Kutuları ve Kesimli Denetimler gibi öğelerden oluşur ve kullanıcı bunları işlendiğinde anlık eylemlere veya görünür sonuçlara neden olur.

AppKit Denetimlerinin tümü, çoğu kullanım için uygun olacak standart, yerleşik bir görünüme sahiptir, bazıları pencere çerçevesi alanında veya Kenar Çubuğu alanında veya Bildirim Merkezi pencere öğesinde olduğu gibi Bir Zindelik Efekti bağlamında kullanılmak üzere alternatif bir görünüm belirtir.

Apple, AppKit Denetimleri ile çalışırken aşağıdaki yönergeleri önerir:

  • Denetim boyutlarını aynı görünümde karıştırmaktan kaçının.
  • Genel olarak denetimleri dikey olarak yeniden boyutlandırmaktan kaçının.
  • Denetim içinde sistem yazı tipini ve uygun metin boyutunu kullanın.
  • Denetimler arasındaki doğru aralığı kullanın.

Daha fazla bilgi için lütfen Apple'ın OS X İnsan Arabirimi Yönergeleri'nin Denetimler ve Görünümler Hakkında bölümüne bakın.

Pencere Çerçevesinde Denetimleri Kullanma

AppKit Denetimlerinin bir Pencere Çerçevesi alanına eklenmesini sağlayan bir görüntüleme stili içeren bir alt kümesi vardır. Örneğin, Posta uygulamasının araç çubuğuna bakın:

Mac Pencere çerçevesi

  • Yuvarlak Dokulu Düğme - Stili NSTexturedRoundedBezelStyleolan ANSButton.
  • Dokulu Yuvarlatılmış Kesimli Denetim - stiline NSSegmentStyleTexturedRoundedsahip ANSSegmentedControl.
  • Dokulu Yuvarlatılmış Kesimli Denetim - stiline NSSegmentStyleSeparatedsahip ANSSegmentedControl.
  • Yuvarlak Dokulu Açılır Menü - Stili NSTexturedRoundedBezelStyleolan ANSPopUpButton.
  • Yuvarlak Dokulu Açılan Menü - Stili NSTexturedRoundedBezelStyleolan ANSPopUpButton.
  • Arama Çubuğu - A NSSearchField.

Apple, Bir Pencere Çerçevesinde AppKit Denetimleri ile çalışırken aşağıdaki yönergeleri önerir:

  • Pencere Gövdesi'nde Pencere Çerçevesine özgü denetim stillerini kullanmayın.
  • Pencere Çerçevesi'nde Pencere Gövdesi denetimlerini veya stillerini kullanmayın.

Daha fazla bilgi için lütfen Apple'ın OS X İnsan Arabirimi Yönergeleri'nin Denetimler ve Görünümler Hakkında bölümüne bakın.

Arabirim Oluşturucusu'nda Kullanıcı Arabirimi Oluşturma

Yeni bir Xamarin.Mac Cocoa uygulaması oluşturduğunuzda varsayılan olarak standart bir boş pencere alırsınız. Bu pencereler, projeye otomatik olarak eklenen bir .storyboard dosyada tanımlanır. Windows tasarımınızı düzenlemek için, Çözüm Gezgini dosyaya Main.storyboard çift tıklayın:

Çözüm Gezgini Ana Görsel Taslak seçme

Bu, Xcode'un Arabirim Oluşturucusu'nda pencere tasarımını açar:

Xcode'da görsel taslak düzenleme

Kullanıcı Arabiriminizi oluşturmak için, Kullanıcı Arabirimi Öğelerini (AppKit Denetimleri) Kitaplık Denetçisi'nden Arabirim Oluşturucusu'ndaki Arabirim Düzenleyicisi'ne sürüklersiniz. Aşağıdaki örnekte, Dikey Bölünmüş Görünüm denetimi Kitaplık Denetçisi'ndenalınmış ve Arabirim Düzenleyicisi'ndeki Pencereye yerleştirilmiştir:

Kitaplıktan Bölünmüş Görünüm Seçme

Arabirim Oluşturucusu'nda Kullanıcı Arabirimi oluşturma hakkında daha fazla bilgi için lütfen Xcode'a giriş ve Arabirim Oluşturucusu belgelerimize bakın.

Boyutlandırma ve Konumlandırma

Kullanıcı Arabirimi'ne bir denetim eklendikten sonra, değerleri el ile girerek konumunu ve boyutunu ayarlamak ve üst Pencere veya Görünüm yeniden boyutlandırıldığında denetimin otomatik olarak nasıl konumlandırıldığını ve boyutlandırıldığını denetlemek için Kısıtlama düzenleyicisini kullanın:

Kısıtlamaları ayarlama

Denetimi belirli bir (x,y) konuma yapıştırmak için Otomatik Yeniden Boyutlandırma kutusunun dışındaki Kırmızı I-Kirişleri kullanın. Örneğin:

Kısıtlamayı düzenleme

Seçili denetimin (Hiyerarşi Görünümü ve Arabirim Düzenleyicisi'nde) yeniden boyutlandırılırken veya taşınırken Pencere veya Görünüm'ün üst ve sağ konumuna takılacağını belirtir.

Düzenleyici denetim özelliklerinin Height ve Width gibi diğer öğeleri:

Yüksekliği ayarlama

Hizalama Düzenleyicisi'ni kullanarak kısıtlamaları olan öğelerin hizalamasını da denetleyebilirsiniz:

Hizalama Düzenleyicisi

Önemli

(0,0) ekranın sol üst köşesi olan iOS'un aksine, macOS'ta (0,0) sol alt köşedir. Bunun nedeni, macOS'un sayı değerlerinin yukarı ve sağa doğru artan bir matematiksel koordinat sistemi kullanmasıdır. AppKit denetimlerini bir Kullanıcı Arabirimine yerleştirirken bunu dikkate almanız gerekir.

Özel Sınıf Ayarlama

AppKit Denetimleri ile çalışırken alt sınıfa almanız ve mevcut denetimi kullanmanız ve bu sınıfın özel sürümünü oluşturmanız gereken zamanlar vardır. Örneğin, Kaynak Listesi'nin özel bir sürümünü tanımlama:

using System;
using AppKit;
using Foundation;

namespace AppKit
{
    [Register("SourceListView")]
    public class SourceListView : NSOutlineView
    {
        #region Computed Properties
        public SourceListDataSource Data {
            get {return (SourceListDataSource)this.DataSource; }
        }
        #endregion

        #region Constructors
        public SourceListView ()
        {

        }

        public SourceListView (IntPtr handle) : base(handle)
        {

        }

        public SourceListView (NSCoder coder) : base(coder)
        {

        }

        public SourceListView (NSObjectFlag t) : base(t)
        {

        }
        #endregion

        #region Override Methods
        public override void AwakeFromNib ()
        {
            base.AwakeFromNib ();

        }
        #endregion

        #region Public Methods
        public void Initialize() {

            // Initialize this instance
            this.DataSource = new SourceListDataSource (this);
            this.Delegate = new SourceListDelegate (this);

        }

        public void AddItem(SourceListItem item) {
            if (Data != null) {
                Data.Items.Add (item);
            }
        }
        #endregion

        #region Events
        public delegate void ItemSelectedDelegate(SourceListItem item);
        public event ItemSelectedDelegate ItemSelected;

        internal void RaiseItemSelected(SourceListItem item) {
            // Inform caller
            if (this.ItemSelected != null) {
                this.ItemSelected (item);
            }
        }
        #endregion
    }
}

[Register("SourceListView")] Burada yönerge, Arabirim Oluşturucusu'nda kullanılabilmesi için Objective-C sınıfını olarak kullanıma sunarSourceListView. Daha fazla bilgi için lütfen Xamarin.Mac Internals belgesinin C# sınıflarını / yöntemlerini kullanıma alma Objective-C bölümüne bakın. C# sınıflarınızı nesnelere ve UI Öğelerine bağlamak için Objective-C kullanılan ve Export komutları açıklanmaktadırRegister.

Yukarıdaki kod uygulandığında, genişletmekte olduğunuz temel türde bir AppKit Denetimini tasarım yüzeyine sürükleyebilirsiniz (aşağıdaki örnekte Kaynak Liste), Kimlik Denetçisi'ne geçiş yapabilir ve Özel Sınıfı kullanıma Objective-C sunduğunuz ada ayarlayabilirsiniz (örnekSourceListView):

Xcode'da özel sınıf ayarlama

Çıkışları ve Eylemleri Açığa Çıkarma

AppKit Denetimine C# kodunda erişilebilmek için önce Çıkış veya Eylem olarak kullanıma sunulmalı. Bunu yapmak için, Arabirim Hiyerarşisi'nde veya Arabirim Düzenleyicisi'nde verilen denetimi seçin ve Yardımcı Görünümü'negeçin (düzenleme için Pencerenizin seçili olduğundan .h emin olun):

Düzenlenecek doğru dosyayı seçme

Control tuşuna basıp AppKit denetiminden verme .h dosyasına sürükleyerek Çıkış veya Eylem oluşturmaya başlayın:

Çıkış veya Eylem oluşturmak için sürükleme

Oluşturulacak pozlama türünü seçin ve Çıkış veya Eyleme Bir Ad verin:

Çıkış veya Eylemi Yapılandırma

Çıkışlar ve Eylemler ile çalışma hakkında daha fazla bilgi için Xcode ve Interface Builder'a Giriş belgelerimizin Çıkışlar ve Eylemler bölümüne bakın.

Xcode ile Değişiklikleri Eşitleme

Xcode'dan Mac için Visual Studio geri döndüğünüzde, Xcode'da yaptığınız tüm değişiklikler Xamarin.Mac projenizle otomatik olarak eşitlenir.

Çözüm Gezgini öğesini seçersenizSplitViewController.designer.cs, C# kodumuzda Outlet ve Action'ınızın nasıl bağlandığını görebilirsiniz:

Xcode ile Değişiklikleri Eşitleme

Dosyadaki tanımın SplitViewController.designer.cs nasıl olduğunu fark edin:

[Outlet]
AppKit.NSSplitViewItem LeftController { get; set; }

[Outlet]
AppKit.NSSplitViewItem RightController { get; set; }

[Outlet]
AppKit.NSSplitView SplitView { get; set; }

Xcode dosyasındaki tanımıyla MainWindow.h hizalayın:

@interface SplitViewController : NSSplitViewController {
    NSSplitViewItem *_LeftController;
    NSSplitViewItem *_RightController;
    NSSplitView *_SplitView;
}

@property (nonatomic, retain) IBOutlet NSSplitViewItem *LeftController;

@property (nonatomic, retain) IBOutlet NSSplitViewItem *RightController;

@property (nonatomic, retain) IBOutlet NSSplitView *SplitView;

Gördüğünüz gibi, Mac için Visual Studio dosyadaki .h değişiklikleri dinler ve ardından ilgili dosyadaki .designer.cs bu değişiklikleri otomatik olarak eşitleyerek bunları uygulamanıza sunar. Bunun kısmi bir sınıf olduğunu SplitViewController.designer.cs da fark edebilirsiniz, böylece Mac için Visual Studio sınıfına yaptığımız değişikliklerin üzerine yazacak şekilde değişiklik SplitViewController.cs yapmak zorunda değildir.

Normalde kendinizi asla açmanıza SplitViewController.designer.cs gerek kalmaz, sadece eğitim amaçlı olarak burada sunulmuştur.

Önemli

Çoğu durumda, Mac için Visual Studio Xcode'da yapılan değişiklikleri otomatik olarak görür ve bunları Xamarin.Mac projenizle eşitler. Eşitlemenin otomatik olarak gerçekleşmediği kapalı durumda, Xcode'a geri dönün ve yeniden Mac için Visual Studio. Bu normalde eşitleme döngüsünü başlatır.

Düğmelerle Çalışma

AppKit, Kullanıcı Arabirimi Tasarımınızda kullanılabilecek çeşitli düğme türleri sağlar. Daha fazla bilgi için lütfen Apple'ın OS X İnsan Arabirimi Yönergeleri'nin Düğmeler bölümüne bakın.

Farklı düğme türleri örneği

Çıkış aracılığıyla bir düğme gösterildiyse, aşağıdaki kod düğmeye basıldığına yanıt verir:

ButtonOutlet.Activated += (sender, e) => {
        FeedbackLabel.StringValue = "Button Outlet Pressed";
};

Eylemler aracılığıyla kullanıma sunulan düğmeler için, Xcode'da seçtiğiniz adla sizin için otomatik olarak bir public partial yöntem oluşturulur. Eylem'e yanıt vermek için, Eylemin tanımlandığı sınıftaki kısmi yöntemi tamamlayın. Örneğin:

partial void ButtonAction (Foundation.NSObject sender) {
    // Do something in response to the Action
    FeedbackLabel.StringValue = "Button Action Pressed";
}

Durumu (Açık ve Kapalı gibi) olan düğmeler için durum, sabit listesiyle State birlikte özelliğiyle NSCellStateValue denetlenebilir veya ayarlanabilir. Örneğin:

DisclosureButton.Activated += (sender, e) => {
    LorumIpsum.Hidden = (DisclosureButton.State == NSCellStateValue.On);
};

Nerede NSCellStateValue olabilir:

  • Açık - Düğme gönderiliyor veya denetim seçili (onay kutusundaki onay kutusu gibi).
  • Kapalı - Düğme gönderilmez veya denetim seçilmez.
  • Karışık - Açık ve Kapalı durumlarının bir karışımı.

Düğmeyi Varsayılan Olarak İşaretle ve Anahtar Eşdeğerini Ayarla

Kullanıcı arabirimi tasarımına eklediğiniz tüm düğmelerde, kullanıcı klavyedeki Return/Enter tuşuna bastığında etkinleştirilecek varsayılan düğme olarak bu düğmeyi işaretleyebilirsiniz. macOS'ta bu düğme varsayılan olarak mavi bir arka plan rengi alır.

Bir düğmeyi varsayılan olarak ayarlamak için Xcode'un Arabirim Oluşturucusu'nda düğmeyi seçin. Ardından, Öznitelik Denetçisi'nde Anahtar Eşdeğerialanını seçin ve Return/Enter tuşuna basın:

Anahtar Eşdeğerini Düzenleme

Aynı şekilde, fare yerine klavyeyi kullanarak düğmeyi etkinleştirmek için kullanılabilecek herhangi bir tuş dizisi atayabilirsiniz. Örneğin, yukarıdaki resimde Command-C tuşlarına basarak.

Uygulama çalıştırıldığında ve Düğmeli Pencere Tuş ve Odaklanmış olduğunda, kullanıcı Command-C tuşlarına basarsa düğme eylemi etkinleştirilir (kullanıcı düğmeye tıklamış gibi).

Onay Kutuları ve Radyo Düğmeleriyle Çalışma

AppKit, Kullanıcı Arabirimi Tasarımınızda kullanılabilecek çeşitli onay kutuları ve radyo düğmesi grupları sağlar. Daha fazla bilgi için lütfen Apple'ın OS X İnsan Arabirimi Yönergeleri'nin Düğmeler bölümüne bakın.

Kullanılabilir onay kutusu türleri örneği

Onay kutuları ve Radyo Düğmeleri (Çıkışlar aracılığıyla kullanıma sunulan) bir duruma sahiptir (Açık ve Kapalı gibi), durum sabit listesi üzerinde özelliğiyle StateNSCellStateValue denetlenebilir veya ayarlanabilir. Örneğin:

AdjustTime.Activated += (sender, e) => {
    FeedbackLabel.StringValue = string.Format("Adjust Time: {0}",AdjustTime.State == NSCellStateValue.On);
};

Nerede NSCellStateValue olabilir:

  • Açık - Düğme gönderiliyor veya denetim seçili (onay kutusundaki onay kutusu gibi).
  • Kapalı - Düğme gönderilmez veya denetim seçilmez.
  • Karışık - Açık ve Kapalı durumlarının bir karışımı.

Radyo Düğmesi Grubu'ndaki bir düğmeyi seçmek için, Radyo Düğmesi'ni çıkış olarak seçmek üzere kullanıma sunun ve özelliğini ayarlayınState. Örneğin:

partial void SelectCar (Foundation.NSObject sender) {
    TransportationCar.State = NSCellStateValue.On;
    FeedbackLabel.StringValue = "Car Selected";
}

Grup olarak hareket eden ve seçili durumu otomatik olarak işleyen radyo düğmelerinden oluşan bir koleksiyon elde etmek için yeni bir Eylem oluşturun ve gruptaki her düğmeyi buna ekleyin:

Yeni Eylem Oluşturma

Ardından, Öznitelik Denetçisi'ndeki her radyo düğmesine benzersiz Tag bir atayın:

Radyo düğmesi etiketini düzenleme

Değişikliklerinizi kaydedin ve Mac için Visual Studio dönün, tüm radyo düğmelerinin bağlı olduğu Eylemi işlemek için kodu ekleyin:

partial void NumberChanged(Foundation.NSObject sender)
{
    var check = sender as NSButton;
    Console.WriteLine("Changed to {0}", check.Tag);
}

Hangi radyo düğmesinin Tag seçildiğini görmek için özelliğini kullanabilirsiniz.

Menü Denetimleriyle Çalışma

AppKit, Kullanıcı Arabirimi Tasarımınızda kullanılabilecek çeşitli menü denetimleri sağlar. Daha fazla bilgi için lütfen Apple'ın OS X İnsan Arabirimi Yönergeleri'nin Menü Denetimleri bölümüne bakın.

Örnek menü denetimleri

Menü Denetim Verilerini Sağlama

macOS için kullanılabilen Menü Denetimleri, bir iç listeden (Arabirim Oluşturucusu'nda önceden tanımlanabilir veya kod yoluyla doldurulabilir) veya kendi özel, dış veri kaynağınızı sağlayarak açılan listeyi dolduracak şekilde ayarlanabilir.

İç Verilerle Çalışma

Arabirim Oluşturucusu'ndaki öğeleri tanımlamaya ek olarak, Menü Denetimleri (gibi NSComboBox), içerdikleri iç listeden öğe ekleme, düzenleme veya silme işlemleri gerçekleştirmenize olanak sağlayan eksiksiz bir yöntem kümesi sağlar:

  • Add - Listenin sonuna yeni bir öğe ekler.
  • GetItem - Verilen dizindeki öğeyi döndürür.
  • Insert - Verilen konumdaki listeye yeni bir öğe ekler.
  • IndexOf - Verilen öğenin dizinini döndürür.
  • Remove - Verilen öğeyi listeden kaldırır.
  • RemoveAll - Listedeki tüm öğeleri kaldırır.
  • RemoveAt - Belirtilen dizindeki öğeyi kaldırır.
  • Count - Listedeki öğe sayısını döndürür.

Önemli

Extern Veri Kaynağı ()UsesDataSource = true kullanıyorsanız, yukarıdaki yöntemlerden herhangi birini çağırmak bir özel durum oluşturur.

Dış Veri Kaynağıyla Çalışma

Menü Denetiminizin satırlarını sağlamak için yerleşik İç Verileri kullanmak yerine isteğe bağlı olarak bir Dış Veri Kaynağı kullanabilir ve öğeler için kendi yedekleme deponuzu (SQLite veritabanı gibi) sağlayabilirsiniz.

Dış Veri Kaynağı ile çalışmak için Menü Denetiminin Veri Kaynağı örneğini oluşturacak (NSComboBoxDataSource örneğin) ve gerekli verileri sağlamak için çeşitli yöntemleri geçersiz kılacaksınız:

  • ItemCount - Listedeki öğe sayısını döndürür.
  • ObjectValueForItem - Belirli bir dizin için öğenin değerini döndürür.
  • IndexOfItem - Verme öğesi değerinin dizinini döndürür.
  • CompletedString - Kısmen yazılan öğe değeri için eşleşen ilk öğe değerini döndürür. Bu yöntem yalnızca Otomatik Tamamlama etkinleştirildiyse (Completes = true) çağrılır.

Daha fazla ayrıntı için veritabanlarıyla çalışma belgesinin Veritabanları ve ComboBox'lar bölümüne bakın.

Listenin Görünümünü Ayarlama

Menü Denetimi'nin görünümünü ayarlamak için aşağıdaki yöntemler kullanılabilir:

  • HasVerticalScroller - ise true, denetim dikey bir kaydırma çubuğu görüntüler.
  • VisibleItems - Denetim açıldığında görüntülenen öğe sayısını ayarlayın. Varsayılan değer beştir (5).
  • IntercellSpacing- Sol ve sağ kenar boşluklarını Height ve öğeden önceki ve sonraki boşluğu belirten bir NSSize alan Width sağlayarak belirli bir öğenin etrafındaki boşluk miktarını ayarlayın.
  • ItemHeight - Listedeki her öğenin yüksekliğini belirtir.

açılan türleri NSPopupButtonsiçin, ilk Menü Öğesi denetimin başlığını sağlar. Örneğin:

Örnek menü denetimi

Başlığı değiştirmek için bu öğeyi çıkış olarak kullanıma sunun ve aşağıdaki gibi bir kod kullanın:

DropDownSelected.Title = "Item 1";

Seçili Öğeleri Düzenleme

Aşağıdaki yöntemler ve özellikler, Menü Denetimi'nin listesindeki seçili öğeleri işlemenize olanak sağlar:

  • SelectItem - Belirtilen dizindeki öğeyi seçer.
  • Select - Verilen öğe değerini seçin.
  • DeselectItem - Belirtilen dizindeki öğenin seçimini kaldırır.
  • SelectedIndex - Seçili durumdaki öğenin dizinini döndürür.
  • SelectedValue - Seçili durumdaki öğenin değerini döndürür.

ScrollItemAtIndexToTop öğesini listenin en üstündeki belirtilen dizinde sunmak için ve ScrollItemAtIndexToVisible belirtilen dizindeki öğe görünene kadar listeyi kaydırmak için kullanın.

Olaylara Yanıt Verme

Menü Denetimleri, kullanıcı etkileşimini yanıtlamak için aşağıdaki olayları sağlar:

  • SelectionChanged - Kullanıcı listeden bir değer seçtiğinde çağrılır.
  • SelectionIsChanging - Kullanıcı tarafından seçilen yeni öğe etkin seçime dönüşmeden önce çağrılır.
  • WillPopup - Öğe açılan listesi görüntülenmeden önce çağrılır.
  • WillDismiss - Öğelerin açılan listesi kapatilmeden önce çağrılır.

Denetimler içinNSComboBox, kullanıcı Birleşik Giriş Kutusu'ndaki metnin değerini her düzenleyışında çağrılan olay gibiChanged, ile aynı olayların NSTextFieldtümünü içerir.

İsteğe bağlı olarak, öğeyi bir Eyleme ekleyerek Arabirim Oluşturucusu'nda tanımlanan İç Veri Menüsü Öğelerini yanıtlayabilir ve kullanıcı tarafından tetiklenen Eyleme yanıt vermek için aşağıdaki gibi bir kod kullanabilirsiniz:

partial void ItemOne (Foundation.NSObject sender) {
    DropDownSelected.Title = "Item 1";
    FeedbackLabel.StringValue = "Item One Selected";
}

Menüler ve Menü Denetimleri ile çalışma hakkında daha fazla bilgi için lütfen Menüler ve Açılır Düğme ve Aşağı Açılan Listeler belgelerimize bakın.

Seçim Denetimleriyle Çalışma

AppKit, Kullanıcı Arabirimi Tasarımınızda kullanılabilecek çeşitli seçim denetimleri sağlar. Daha fazla bilgi için lütfen Apple'ın OS X İnsan Arabirimi Yönergeleri'nin Seçim Denetimleri bölümüne bakın.

Örnek seçim denetimleri

Seçim Denetimi'nin kullanıcı etkileşimi olup olmadığını izlemenin iki yolu vardır ve bunu eylem olarak gösterir. Örneğin:

partial void SegmentButtonPressed (Foundation.NSObject sender) {
    FeedbackLabel.StringValue = string.Format("Button {0} Pressed",SegmentButtons.SelectedSegment);
}

Veya etkinliğe bir TemsilciActivated ekleyerek. Örneğin:

TickedSlider.Activated += (sender, e) => {
    FeedbackLabel.StringValue = string.Format("Stepper Value: {0:###}",TickedSlider.IntValue);
};

Seçim Denetiminin değerini ayarlamak veya okumak için özelliğini kullanın IntValue . Örneğin:

FeedbackLabel.StringValue = string.Format("Stepper Value: {0:###}",TickedSlider.IntValue);

Özel denetimler (Renk Kutusu ve Görüntü Kutusu gibi), değer türleri için belirli özelliklere sahiptir. Örneğin:

ColorWell.Color = NSColor.Red;
ImageWell.Image = NSImage.ImageNamed ("tag.png");

NSDatePicker doğrudan Tarih ve Saat ile çalışmak için aşağıdaki özelliklere sahiptir:

  • DateValue - Geçerli tarih ve saat değeri olarak.NSDate
  • Yerel - Kullanıcının konumu olarak NSLocal.
  • TimeInterval - olarak Doublesaat değeri.
  • TimeZone - Kullanıcının saat dilimi olarak NSTimeZone.

Gösterge Denetimleriyle Çalışma

AppKit, Kullanıcı Arabirimi Tasarımınızda kullanılabilecek çeşitli türde Gösterge Denetimleri sağlar. Daha fazla bilgi için lütfen Apple'ın OS X İnsan Arabirimi Yönergeleri'nin Gösterge Denetimleri bölümüne bakın.

Örnek gösterge denetimleri

Gösterge Denetimi'nin kullanıcı etkileşimi olup olmadığını izlemenin iki yolu vardır: Bunu Eylem veya Çıkış olarak ortaya çıkarmak ve olaya temsilcieklemektir.Activated Örneğin:

LevelIndicator.Activated += (sender, e) => {
    FeedbackLabel.StringValue = string.Format("Level: {0:###}",LevelIndicator.DoubleValue);
};

Gösterge Denetimi'nin değerini okumak veya ayarlamak için özelliğini kullanın DoubleValue . Örneğin:

FeedbackLabel.StringValue = string.Format("Rating: {0:###}",Rating.DoubleValue);

Belirsiz ve Zaman Uyumsuz İlerleme Göstergeleri görüntülendiğinde animasyonlu olmalıdır. StartAnimation Görüntülendiğinde animasyonu başlatmak için yöntemini kullanın. Örneğin:

Indeterminate.StartAnimation (this);
AsyncProgress.StartAnimation (this);

yönteminin çağrılması StopAnimation animasyonu durdurur.

Metin Denetimleri ile Çalışma

AppKit, Kullanıcı Arabirimi Tasarımınızda kullanılabilecek çeşitli türlerde Metin Denetimleri sağlar. Daha fazla bilgi için lütfen Apple'ın OS X İnsan Arabirimi Yönergeleri'nin Metin Denetimleri bölümüne bakın.

Örnek metin denetimleri

Metin Alanları ()NSTextField için, kullanıcı etkileşimini izlemek için aşağıdaki olaylar kullanılabilir:

  • Değiştirildi - Kullanıcı alanın değerini her değiştirdiği zaman tetiklenir. Örneğin, yazılan her karakterde.
  • EditingBegan - Kullanıcı düzenleme için alanı seçtiğinde tetiklenir.
  • EditingEnded - Kullanıcı alanda Enter tuşuna bastığında veya alandan ayrıldığında.

StringValue alanın değerini okumak veya ayarlamak için özelliğini kullanın. Örneğin:

FeedbackLabel.StringValue = string.Format("User ID: {0}",UserField.StringValue);

Sayısal değerleri görüntüleyen veya düzenleyen alanlar için özelliğini kullanabilirsiniz IntValue . Örneğin:

FeedbackLabel.StringValue = string.Format("Number: {0}",NumberField.IntValue);

, NSTextView yerleşik biçimlendirmeye sahip tam özellikli bir metin düzenleme ve görüntüleme alanı sağlar. NSTextFieldgibi, alanının değerini okumak veya ayarlamak için özelliğini kullanınStringValue.

İçerik Görünümleriyle Çalışma

AppKit, Kullanıcı Arabirimi Tasarımınızda kullanılabilecek çeşitli türde İçerik Görünümleri sağlar. Daha fazla bilgi için lütfen Apple'ın OS X İnsan Arabirimi Yönergeleri'nin İçerik Görünümleri bölümüne bakın.

Örnek içerik görünümü

Açılır Pencereler

Popover, belirli bir denetim veya ekran alanıyla doğrudan ilişkili işlevler sağlayan geçici bir kullanıcı arabirimi öğesidir. Açılır pencere, ilişkili olduğu denetimi veya alanı içeren pencerenin üzerinde kayar ve kenarlığında ortaya çıktığı noktayı belirten bir ok bulunur.

Bir açılır pencere oluşturmak için aşağıdakileri yapın:

  1. .storyboard Açılır pencere eklemek istediğiniz pencerenin dosyasını açmak için Çözüm Gezgini

  2. Görünüm Denetleyicisini Kitaplık Denetçisi'ndenArabirim Düzenleyicisi'ne sürükleyin:

    Kitaplıktan Görünüm Denetleyicisi Seçme

  3. Özel Görünümün boyutunu ve düzenini tanımlayın:

    Düzeni düzenleme

  4. Control tuşuna basılı tutup açılan pencere kaynağından Görünüm Denetleyicisi'ne sürükleyin:

    Segue oluşturmak için sürükleme

  5. Açılır menüden Açılır Menü'yü seçin:

    Segue türünü ayarlama

  6. Değişikliklerinizi kaydedin ve Xcode ile eşitlemek için Mac için Visual Studio dönün.

Sekme Görünümleri

Sekme Görünümleri, Bölmeler olarak adlandırılan bir görünüm kümesiyle birleştirilmiş bir Sekme Listesi'ni (Kesimli Denetime benzer) oluşur. Kullanıcı yeni bir Sekme seçtiğinde, buna eklenen Bölme görüntülenir. Her Bölme kendi denetim kümesini içerir.

Xcode'un Arabirim Oluşturucusu'nda Sekme Görünümü ile çalışırken, Sekme sayısını ayarlamak için Öznitelik Denetçisi'ni kullanın:

Sekme sayısını düzenleme

Arabirim Hiyerarşisindeki her Sekmeyi seçerek Başlık değerini ayarlayın ve Kullanıcı Arabirimi Öğelerini Bölmesine ekleyin:

Xcode'da sekmeleri düzenleme

Veri Bağlama AppKit Denetimleri

Xamarin.Mac uygulamanızda Anahtar-Değer Kodlama ve Veri Bağlama tekniklerini kullanarak, kullanıcı arabirimi öğelerini doldurmak ve bunlarla çalışmak için yazmanız ve korumanız gereken kod miktarını büyük ölçüde azaltabilirsiniz. Ayrıca, destek verilerinizi (Veri Modeli) ön uç Kullanıcı Arabiriminizden (Model-Görünüm-Denetleyici) daha fazla ayırmanın avantajına da sahip olursunuz ve bu sayede bakımı daha kolay ve daha esnek bir uygulama tasarımı elde edebilirsiniz.

Anahtar-Değer Kodlaması (KVC), örnek değişkenleri veya erişimci yöntemleri (get/set) aracılığıyla erişmek yerine özellikleri tanımlamak için anahtarları (özel olarak biçimlendirilmiş dizeler) kullanarak nesnenin özelliklerine dolaylı olarak erişmeye yönelik bir mekanizmadır. Xamarin.Mac uygulamanızda Anahtar-Değer Kodlama uyumlu erişimcileri uygulayarak Anahtar-Değer Gözlemleme (KVO), Veri Bağlama, Çekirdek Veriler, Kakao bağlamaları ve betiklenebilirlik gibi diğer macOS özelliklerine erişim elde edebilirsiniz.

Daha fazla bilgi için lütfen Veri Bağlama ve Anahtar-Değer Kodlama belgelerimizin Basit Veri Bağlama bölümüne bakın.

Özet

Bu makalede, Xamarin.Mac uygulamasında Düğmeler, Etiketler, Metin Alanları, Onay Kutuları ve Kesimli Denetimler gibi standart AppKit denetimleriyle çalışma konusuna ayrıntılı bir bakış verilmişti. Bunları Xcode'un Arabirim Oluşturucusu'ndaki Bir Kullanıcı Arabirimi Tasarımına ekleme, Çıkışlar ve Eylemler aracılığıyla koda maruz bırakarak C# Code'da AppKit Denetimleri ile çalışma ele alınmıştır.