Xamarin. Mac içindeki standart denetimler

Bu makalede, bir Xamarin. Mac uygulamasındaki düğmeler, Etiketler, metin alanları, onay kutuları ve kesimli denetimler gibi standart AppKit denetimleriyle çalışma ele alınmaktadır. Interface Builder olan bir arabirime ekleme ve kod içinde bunlarla etkileşim kurma işlemini açıklar.

Bir Xamarin. Mac uygulamasında C# ve .NET ile çalışırken, Objective-C ve Objective-C üzerinde çalışan bir geliştiricinin de aynı appkit denetimlerine erişebilirsiniz. Xamarin. Mac doğrudan Xcode ile tümleştiğinden, Appkit denetimlerinizi oluşturmak ve sürdürmek için Xcode 'un Interface Builder kullanabilirsiniz (ya da 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 UI öğeleridir. Bunlar düğmeler, Etiketler, metin alanları, onay kutuları ve kesimli denetimler gibi öğelerden oluşur ve Kullanıcı bunları yaptıkları zaman anında eylemlere veya görünür sonuçlara neden olur.

Örnek uygulama ana ekranı

Bu makalede, bir Xamarin. Mac uygulamasındaki AppKit denetimleriyle çalışmanın temelleri ele alınacaktır. Bu makalede kullanacağımız temel kavramları ve teknikleri kapsadığından, ilk olarak Hello, Mac makalesi, özellikle de xcode ve Interface Builder ve diğer ve eylemler bölümlerine giriş yapmanız önerilir.

Exposing C# classes / methods to Objective-CExposing C# classes / methods to Objective-C belgesinin bölümüne de göz atmak Isteyebilirsiniz, RegisterExport C# sınıflarınızı Objective-C nesneler ve Kullanıcı Arabirimi öğelerine bağlamak için kullanılan ve komutlarını açıklamaktadır.

Denetimlere ve görünümlere giriş

macOS (eskiden Mac OS X olarak bilinirdi), AppKit çerçevesi aracılığıyla standart bir kullanıcı arabirimi denetimleri kümesi sağlar. Bunlar düğmeler, Etiketler, metin alanları, onay kutuları ve kesimli denetimler gibi öğelerden oluşur ve Kullanıcı bunları yaptıkları zaman anında eylemlere veya görünür sonuçlara neden olur.

Tüm AppKit denetimlerinde, çoğu kullanım için uygun olan standart ve yerleşik bir görünüm vardır. bazıları, bir pencere çerçevesi alanında veya bir araç çubuğu alanında ya da bir bildirim Merkezi pencere öğesinde olduğu gibi bir Vibrance efekt bağlamında kullanılmak üzere alternatif bir görünüm belirler.

Apple, AppKit denetimleriyle ç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.
  • Bir denetim içindeki sistem yazı tipini ve uygun metin boyutunu kullanın.
  • Denetimler arasındaki uygun aralığı kullanın.

Daha fazla bilgi için, Apple 'ın OS X ınsan arabirimi yönergelerinindenetimleri ve görünümleri hakkında bölümüne bakın.

Pencere çerçevesindeki denetimleri kullanma

Bir pencerenin çerçeve alanına dahil olmasına izin veren bir görüntüleme stili içeren AppKit denetimlerinin bir alt kümesi vardır. Örneğin, posta uygulamasının araç çubuğuna bakın:

Mac pencere çerçevesi

  • Basamaklı dokulu düğme -a stili NSTexturedRoundedBezelStyle .
  • Dokulu yuvarlatılmış bölünmüş denetim -a stili NSSegmentStyleTexturedRounded .
  • Dokulu yuvarlatılmış bölünmüş denetim -a stili NSSegmentStyleSeparated .
  • Stili Pop-Up menü - , stili olan yuvarlak dokulu NSTexturedRoundedBezelStyle .
  • Stili Drop-Down menü - , stili olan yuvarlak dokulu NSTexturedRoundedBezelStyle .
  • Arama çubuğu -A .

Apple, bir pencere çerçevesinde AppKit denetimleriyle çalışırken aşağıdaki yönergeleri önerir:

  • Pencere gövdesinde pencere çerçevesine özgü denetim stillerini kullanmayın.
  • Pencere çerçevesindeki pencere gövde denetimlerini veya stillerini kullanmayın.

Daha fazla bilgi için, Apple 'ın OS X ınsan arabirimi yönergelerinindenetimleri ve görünümleri hakkında bölümüne bakın.

Interface Builder bir 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 .storyboard projeye otomatik olarak dahil edilen bir dosyada tanımlanmıştır. Windows tasarımınızı düzenlemek için, Çözüm Gezginidosyasına çift tıklayın :

Çözüm Gezgini Ana görsel taslağı seçme

Bu, Xcode 'un Interface Builder pencere tasarımını açar:

Xcode 'da film şeridini Düzenle

Kullanıcı arabiriminizi oluşturmak için, Kullanıcı arabirimi öğelerini (AppKit denetimleri) kitaplık denetçisinden Interface Builder Içindeki arabirim düzenleyicisine sürükleyin. Aşağıdaki örnekte, bir Dikey bölünmüş görünüm denetimi, kitaplık denetçisinden Ilaç ve arabirim düzenleyicisindepencereye yerleştirildi:

Kitaplıktan bölünmüş görünüm seçme

Interface Builder bir kullanıcı arabirimi oluşturma hakkında daha fazla bilgi için lütfen bkz. Xcode ve Interface Builder belgelerine giriş .

Boyutlandırma ve konumlandırma

Kullanıcı arabirimine bir denetim eklendikten sonra, konum ve boyutunu değerleri el ile girerek ve üst pencere ya da görünüm yeniden boyutlandırıldığında denetimin otomatik olarak nasıl konumlandığını ve boyutlandırılacağını denetlemek için kısıtlama Düzenleyicisi 'ni kullanın:

Kısıtlamaları ayarlama

Belirli bir (x, y) konumuna bir denetim eklemek için,oto yeniden boyutlandırma kutusunun dışında kırmızı ı-PM 'leri kullanın. Örnek:

Kısıtlama düzenleniyor

Seçili denetimin ( hiyerarşi görünümüarabirim Düzenleyicisi'nde) pencerenin üst ve sağ konumuna takılabileceğini veya yeniden boyutlandırıldığı veya taşındığı şekliyle görünümün doğru olacağını belirtir.

Düzenleyici denetim özelliklerinin yükseklik ve genişlik gibi diğer öğeleri:

Yüksekliği ayarlama

Ayrıca, Hizalama düzenleyicisinikullanarak kısıtlamaların bulunduğu öğelerin hizalamasını kontrol edebilirsiniz:

Hizalama Düzenleyicisi

Önemli

(0, 0), ekranın sol üst köşesi olan iOS 'tan farklı olarak, macOS (0, 0) içinde sol alt köşede bulunur. Bunun nedeni, macOS değerinin değer artarak sağa ve sağa doğru sayı değerleriyle bir matematik koordinat sistemi kullanması nedeniyle oluşur. Kullanıcı arabirimine AppKit denetimleri yerleştirirken bunu dikkate almanız gerekir.

Özel bir sınıf ayarlama

AppKit denetimleriyle çalışırken, alt sınıfa ve var olan denetime ihtiyacınız olacak ve bu sınıfın özel bir sürümünü oluşturmanız gereken durumlar vardır. Örneğin, kaynak listesinin ö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
    }
}

Yönergesinin, [Register("SourceListView")]SourceListViewObjective-C ' Interface Builder de kullanılabilmesi için sınıfı kullanıma sunduğunu gösterir. Daha fazla bilgi için lütfen Exposing C# classes / methods to Objective-CExposing C# classes / methods to Objective-C belgesi bölümüne bakın RegisterExport . C# sınıflarınızı Objective-C nesneler ve UI öğelerine bağlamak için kullanılan komutları açıklar.

Yukarıdaki kod yerine, genişletirken genişletilen temel türün bir AppKit denetimini, tasarım yüzeyine (aşağıdaki örnekte, bir kaynak listesi) sürükleyebilirsiniz, kimlik denetçisi ' ne geçin ve özel sınıfı , üzerinde gösterilen ada ayarlayabilirsiniz (örnek ):

Xcode 'da özel bir sınıf ayarlama

Aykırı Izin ve eylemleri gösterme

C# kodunda AppKit denetimine erişilebilmesi için önce bir priz ya da eylemolarak sunulmalıdır. Bunu yapmak için, arabirim hiyerarşisinde veya arabirim düzenleyicisinde verilen denetimi seçin ve yardımcı görünümüne geçin (bir pencerenizin düzenleme için seçili olduğundan emin olun):

Düzenlenecek doğru dosyayı seçme

Denetim- .h bir .h veya eylemoluşturmaya başlamak için appkit denetiminden verme dosyasına sürükleyin:

Bir priz veya eylem oluşturmak için sürükleme

Oluşturulacak pozlama türünü seçin ve Çıkış ya da eyleme bir adverin:

Çıkışı veya eylemi yapılandırma

Özet ve eylemlerleçalışma hakkında daha fazla bilgi Için, bkz. Xcode ve Interface Builder belgelerine giriş konusundaki aykırı izin ve eylemler bölümü.

Değişiklikleri Xcode ile eşitleme

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

Çözüm Gezgini öğesini seçerseniz, SplitViewController.designer.csÇıkış ve SplitViewController.designer.cseyleminizi C# kodumuza nasıl yedeklerimizi görebileceksiniz:

Değişiklikleri Xcode ile eşitleme

Dosyadaki tanımın nasıl yapıldığını fark edin SplitViewController.designer.cs :

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

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

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

MainWindow.hDosyadaki tanımı Xcode 'da olacak şekilde ayarlayı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örebileceğiniz gibi, dosyadaki değişiklikleri dinler Mac için Visual Studio .h ve ardından bu değişiklikleri .designer.cs uygulamanızda kullanıma sunmak için ilgili dosyada otomatik olarak eşitler. ayrıca SplitViewController.designer.cs kısmi bir sınıf olduğunu fark edebilirsiniz. bu sayede, Mac için Visual Studio değiştirmek zorunda değildir ve bu da SplitViewController.cs sınıfa yaptığımız değişikliklerin üzerine yazılacak.

Normalde SplitViewController.designer.cs kendi kendinize açmanız gerekmez, burada yalnızca eğitim amaçlarıyla 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 projeniz ile eşitler. eşitlemenin otomatik olarak gerçekleşmediğini devre dışı bırakmak için, tekrar tekrar Mac için Visual Studio tekrar tekrar tekrar edin. Bu, normalde bir eşitleme döngüsünü devre dışı bırakır.

Düğmelerle çalışma

AppKit, Kullanıcı arabirimi tasarımınızda kullanılabilecek çeşitli türlerde düğme sağlar. Daha fazla bilgi için lütfen Apple 'ın OS X ınsan arabirimi yönergelerineait düğmeler bölümüne bakın.

Farklı düğme türlerine bir örnek

Bir düğme bir prizaracılığıyla sunulduğunda, aşağıdaki kod basılmakta olan öğesine yanıt verir:

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

Eylemleraracılığıyla kullanıma sunulan düğmeler Için, Xcode 'da seçtiğiniz adla sizin için otomatik olarak bir yöntem oluşturulur. Eylemeyanıt vermek Için, işlemin tanımlandığı sınıftaki kısmi yöntemi doldurun. Örnek:

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üğmeleriçin durum, numaraya göre denetlenir veya özelliğiyle birlikte ayarlanır. Örnek:

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

Nerede NSCellStateValue olabilir:

  • On - Düğme itilir veya denetim seçilidir (örneğin, onay kutusunda bir onay işareti).
  • Kapalı - Düğme atlanmaz veya denetim seçilmez.
  • Karma : On ve Off eyaletlerininkarışımı.

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

Kullanıcı arabirimi tasarımına ekley istediğiniz herhangi bir düğme için, kullanıcı klavyede Return/Enter tuşuna basıldığında etkinleştirilen Varsayılan düğme olarak işaretlayabilirsiniz. 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 Interface Builder. Ardından, Öznitelik Denetçisi'ninAnahtar Eşdeğeri alanı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ılan herhangi bir tuş dizisi atabilirsiniz. Örneğin, yukarıdaki görüntüde Command-C tuşlarına basarak.

Uygulama çalıştırıldığında ve Düğmeli Pencere Anahtar ve Odaklı olduğunda, kullanıcı Command-C tuşuna basarsa düğmenin Eylemi etkinleştirilir (kullanıcı düğmeye tıklamış gibi).

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

AppKit, Kullanıcı Arabirimi Design uygulamanıza ek olarak ç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ürlerine örnek

Onay kutuları ve Radyo Düğmelerinin (Çıkışlararacılığıyla kullanıma açık) durumu (Açık ve Kapalı gibi) vardır; durum, numaraya göre denetlenir veya özelliğiyle birlikte ayarlanır. Örnek:

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

Nerede NSCellStateValue olabilir:

  • On - Düğme itilir veya denetim seçilidir (örneğin, onay kutusunda bir onay işareti).
  • Kapalı - Düğme atlanmaz veya denetim seçilmez.
  • Karma : On ve Off eyaletlerininkarışımı.

Radyo Düğmesi Grubunda bir düğme seçmek için Radyo Düğmesini bir Çıkış olarak göstermek ve özelliğini ayarlamak için kullanın. Örneğin:

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

Bir grup gibi davranacak radyo düğmeleri koleksiyonunu almak ve seçilen durumu otomatik olarak işlemek için yeni bir Eylem oluşturun ve gruptaki her düğmeyi buna iliştirin:

Yeni Eylem Oluşturma

Ardından, Öznitelik Tag Denetçisi'nin her radyo düğmesine benzersiz Tag

Radyo düğmesi etiketini düzenleme

Değişikliklerinizi kaydedin ve Mac için Visual Studio geri dönüp 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 Tag düğmesinin seçili olduğunu görmek için özelliğini kullanabilirsiniz.

Menü Denetimleriyle Çalışma

AppKit, Kullanıcı Arabirimi Design uygulamanıza ekleyebilirsiniz. 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ü Denetimi Verilerini Sağlama

macOS için kullanılabilen Menü Denetimleri, açılan listeyi bir iç listeden (Interface Builder önceden tanımlanmış veya kod aracılığıyla doldurulabilir) ya da kendi özel, dış veri kaynağınızı sağlayarak doldurabilir.

İç Verilerle Çalışma

Interface Builder'da öğe tanımlamaya ek olarak, Menü Denetimleri (örneğin), sürdürtükleri iç listeden öğeleri eklemenize, Düzenlemenize veya Silmenize olanak sağlayan eksiksiz bir NSComboBox yöntem kümesi sağlar:

  • Add - Listenin sonuna yeni bir öğe ekler.
  • GetItem - Verilen dizinde öğ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 - Tüm öğeleri listeden kaldırır.
  • RemoveAt - Belirtilen dizinde öğeyi kaldırır.
  • Count - Listede yer alan öğe sayısını döndürür.

Önemli

Extern Veri Kaynağı () kullanıyorsanız, yukarıdaki yöntemlerden herhangi UsesDataSource = true birini çağırmanız 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 destek depolarınızı sekleyebilirsiniz (örneğin, bir SQLite veritabanı).

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

  • ItemCount - Listede yer alan öğe sayısını döndürür.
  • ObjectValueForItem - Belirli bir dizin için öğenin değerini döndürür.
  • IndexOfItem - Öğe değerinin dizinini döndürür.
  • CompletedString - Kısmen türe sahip öğ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 çağrılır ( Completes = true ).

Diğer ayrıntılar için Veritabanları ve ComboBoxes ile Çalışma belgesinin Veritabanları ve ComboBoxes bölümüne bakın.

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

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

  • HasVerticalScroller - true ise, 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ı belirten ve öğesinin öğeden önce ve sonra alanı belirten bir sağlayarak belirli bir öğenin çevresindeki NSSizeWidth alan miktarını Height ayarlayın.
  • ItemHeight - Listede her öğenin yüksekliğini belirtir.

Daha Drop-Down NSPopupButtons için, ilk Menü Öğesi denetimin başlığını sağlar. Örneğin:

Örnek menü denetimi

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

DropDownSelected.Title = "Item 1";

Seçili Öğeleri Manipüle

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

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

Verilen dizinde öğesini listenin en üstünde sunmak için kullanın ve verilen dizinde öğe görünür olana kadar listeyi ScrollItemAtIndexToTopScrollItemAtIndexToVisible kaydırmak için öğesini kullanın.

Olaylara Yanıt Verme

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

  • SelectionChanged - Kullanıcı listeden bir değer seçtikten sonra çağrılır.
  • SelectionIsChanging - Yeni kullanıcı seçilen öğe etkin seçim haline gelmeden önce çağrılır.
  • WillPopup - Öğe açılan listesi görüntülenmeden önce çağrılır.
  • WillDismiss - Öğe açılan listesi kapatılana kadar çağrılır.

Denetimler için, kullanıcı Birleşik Giriş Kutusu'daki metnin değerini her düzenlerken çağrılan olay gibi ile aynı NSComboBoxNSTextField olayların hepsini Changed içerir.

İsteğe bağlı olarak, öğeyi bir Eyleme ek Interface Builder ve kullanıcı tarafından tetiklenen Eyleme yanıt vermek için aşağıdaki gibi bir kod kullanarak seçiliyken tanımlanan İç Veri Menüsü Öğeleri'ne yanıt veebilirsiniz:

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 Liste Pull-Down bakın.

Seçim Denetimleriyle Çalışma

AppKit, Kullanıcı Arabirimi Design uygulamanıza ek olarak kullanılmaktadır. Daha fazla bilgi için lütfen Apple'ınOS 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 olduğunda bunu bir Eylem olarak ortaya çıkararak izlemenin iki yolu vardır. Örnek:

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

Veya olayına bir Temsilci ekerek. Örnek:

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

Seçim Denetimi'nin değerini ayarlamak veya okumak için özelliğini IntValue kullanın. Örnek:

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

Özel denetimler (Color Well ve Image Well gibi), değer türleri için belirli özelliklere sahiptir. Örneğin:

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

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

  • TARİHSAYISI -geçerli tarih ve saat değeri bir olarak .
  • Yerel -kullanıcının konumu bir .
  • TimeInterval -saat değeri bir .
  • Saat dilimi -kullanıcının saat dilimi olarak .

Gösterge denetimleriyle çalışma

AppKit, Kullanıcı arabirimi tasarımınızda kullanılabilecek çeşitli türlerde gösterge denetimleri sağlar. Daha fazla bilgi için lütfen Apple 'ın OS X ınsan arabirimi yönergeleriningösterge denetimleri bölümüne bakın.

Örnek gösterge denetimleri

Bir gösterge denetiminin Kullanıcı etkileşimi ne zaman bir eylem veya Çıkış olarak ortaya çıkararak ve olaya bir temsilci ekleyerek izlemenin iki yolu vardır . Örnek:

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

Gösterge denetiminin değerini okumak veya ayarlamak için DoubleValue özelliğini kullanın. Örnek:

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

Belirsiz ve zaman uyumsuz Ilerleme göstergeleri görüntülendiğinde animasyon edilmelidir. StartAnimationAnimasyon görüntülenirken başlatmak için yöntemini kullanın. Örnek:

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

Yöntemi çağırmak StopAnimation animasyonu durdurur.

Metin denetimleriyle ç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önergelerininmetin denetimleri bölümüne bakın.

Örnek metin denetimleri

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

  • Değiştirilen -Kullanıcı alanın değerini değiştirdiğinde her zaman tetiklenir. Örneğin, yazılan her karakterde.
  • Editingbaşladığı -Kullanıcı, düzenlenmek üzere alanı seçtiğinde tetiklenir.
  • Edııngended -Kullanıcı alandaki ENTER tuşuna bastığında veya alanı terk ettiğinde.

StringValueAlanın değerini okumak veya ayarlamak için özelliğini kullanın. Örnek:

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

Sayısal değerleri görüntüleyen ya da düzenleyebilen alanlar için, IntValue özelliğini kullanabilirsiniz. Örnek:

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

, NSTextView Yerleşik biçimlendirme ile tam özellikli bir metin düzenleme ve görüntüleme alanı sağlar. Bir gibi NSTextField , StringValue alanın değerini okumak veya ayarlamak için özelliğini kullanın.

Xamarin. Mac uygulamasındaki metin görünümleriyle çalışmaya yönelik karmaşık bir örnek örneği için lütfen Sourcewriter örnek uygulamasınabakın. SourceWriter, kod tamamlama ve basit sözdizimi vurgulama için destek sağlayan basit bir kaynak kod düzenleyicisidir.

SourceWriter kodu tamamen yorumlıydı ve kullanılabilir olduğunda, temel teknolojiden veya metotlardan Xamarin. Mac kılavuzlar belgelerindeki ilgili bilgilere yönelik bağlantılar sunulmaktadır.

Içerik görünümleriyle çalışma

AppKit, Kullanıcı arabirimi tasarımınızda kullanılabilecek çeşitli türlerde Içerik görünümleri sağlar. Daha fazla bilgi için lütfen Apple 'ın OS X ınsan arabirimi yönergelerininiçerik görünümleri bölümüne bakın.

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

Popovers

Popover, belirli bir denetimle veya ekranda bir alanla doğrudan ilgili işlevselliği sağlayan geçici bir kullanıcı arabirimi öğesidir. Bir Popover, ilişkili olduğu denetimi veya alanı içeren pencerenin üzerinde kayan nokta ve kenarlığı, ortaya çıktı olan noktayı göstermek için bir ok içerir.

Bir Popover oluşturmak için aşağıdakileri yapın:

  1. .storyboard.storyboard içine çift tıklayarak bir Popover eklemek istediğiniz pencerenin dosyasını açın

  2. Kitaplık denetçisinden bir Görünüm denetleyicisiniarabirim düzenleyicisinesürükleyin:

    Kitaplıktan bir görünüm denetleyicisi seçme

  3. Özel görünümünboyutunu ve yerleşimini tanımlayın:

    Düzeni düzenleme

  4. Denetim-açılan pencerenin kaynağından Görünüm denetleyicisiüzerine tıklayıp sürükleyin:

    Bir g/a oluşturmak için sürükleme

  5. Açılan menüden Popover ' i seçin:

    SEG türünü ayarlama

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

Sekme görünümleri

Sekme görünümleri, panolarolarak adlandırılan bir görünüm kümesiyle birleştirilmiş bir sekme listesinden (kesimli bir denetime benzer şekilde görünür) oluşur. Kullanıcı yeni bir sekme seçtiğinde, buna bağlı olan bölmesi görüntülenir. Her bölme kendi denetim kümesini içerir.

Xcode 'un Interface Builder bir sekme görünümü ile çalışırken, sekme sayısını ayarlamak için öznitelik denetçisini kullanın:

Sekmelerin sayısını düzenleyen

Başlığını ayarlamak ve Kullanıcı arabirimi öğelerini bölmesineeklemek Için arabirim hiyerarşisindeki her sekmeyi seçin:

Xcode 'da sekmeleri düzenlemeyle

Veri bağlama AppKit denetimleri

Xamarin. Mac uygulamanızda Key-Value kodlama ve veri bağlama tekniklerini kullanarak, doldurmanız ve Kullanıcı arabirimi öğeleriyle çalışmak için yazmanız gereken kod miktarını büyük ölçüde azaltabilirsiniz. Ayrıca, ön uç Kullanıcı arabiriminizden (Model-View-Controller) yedekleme verilerinizi (veri modeli) daha fazla ayırma avantajına sahip olursunuz. böylece, daha esnek uygulama tasarımı daha kolay hale getirir.

Key-Value kodlama (KVC), anahtar değişkenleri veya erişimci yöntemleri () aracılığıyla bunlara erişmek yerine özellikleri belirlemek için anahtarlar (özel olarak biçimlendirilmiş dizeler) kullanılarak nesnenin özelliklerine dolaylı olarak erişmenin bir mekanizmadır get/set . Xamarin. Mac uygulamanızda Key-Value kodlama uyumlu erişimciler uygulayarak, Key-Value gözlemleme (KVO), veri bağlama, çekirdek verileri, Cocoa bağlamaları ve scriptability gibi diğer macOS özelliklerine erişebilirsiniz.

Daha fazla bilgi için lütfen veri bağlamamız ve Key-Value kodlama belgelerinin basit veri bağlama bölümüne bakın.

Özet

Bu makale, Xamarin. Mac uygulamasındaki düğmeler, Etiketler, metin alanları, onay kutuları ve kesimli denetimler gibi standart AppKit denetimleriyle çalışma konusunda ayrıntılı bir bakış gerçekleştirmiştir. Bu, bunları Xcode Interface Builder ' de bir kullanıcı arabirimi tasarımına eklemeyi, bunları Outler ve eylemler aracılığıyla koda ve C# kodundaki AppKit denetimleriyle çalışmayı ele alınmaktadır.