Condividi tramite


Uso del contesto di modifica modelitem

Il ModelItem contesto di modifica è l'oggetto usato dall'applicazione host per comunicare con il designer. EditingContext espone due metodi, Items e Services, che possono essere usati

La collezione di elementi

La Items raccolta viene utilizzata per accedere ai dati condivisi tra l'host e i progettisti o ai dati disponibili per tutti i progettisti. Questa raccolta include le funzionalità seguenti, accessibili tramite la ContextItemManager classe :

  1. GetValue

  2. Subscribe

  3. Unsubscribe

  4. SetValue

Raccolta Servizi

La Services raccolta viene utilizzata per accedere ai servizi che il designer utilizza per interagire con l'host, o ai servizi utilizzati da tutti i designer. Questa raccolta include i seguenti metodi di rilievo:

  1. Publish

  2. Subscribe

  3. Unsubscribe

  4. GetService

Assegnare un'attività a un progettista

Per specificare quale progettista utilizza un'attività, si utilizza l'attributo Designer.

[Designer(typeof(MyClassDesigner))]  
public sealed class MyClass : CodeActivity  
{
}

Creazione di un servizio

Per creare un servizio che funge da canale di informazioni tra la finestra di progettazione e l'host, è necessario creare un'interfaccia e un'implementazione. L'interfaccia viene utilizzata dal Publish metodo per definire i membri del servizio e l'implementazione contiene la logica per il servizio. Nell'esempio di codice seguente viene creata un'interfaccia del servizio e un'implementazione.

public interface IMyService  
    {  
        IEnumerable<string> GetValues(string DisplayName);  
    }  
  
    public class MyServiceImpl : IMyService  
    {  
        public IEnumerable<string> GetValues(string DisplayName)  
        {  
            return new string[]  {
                DisplayName + " One",
                DisplayName + " Two",  
                "Three " + DisplayName  
            } ;  
        }  
    }  

Pubblicazione di un servizio

Affinché un designer utilizzi un servizio, questo deve prima essere pubblicato dall'host utilizzando il metodo Publish.

this.Context.Services.Publish<IMyService>(new MyServiceImpl);  

Sottoscrizione a un servizio

Il progettista ottiene l'accesso al servizio usando il metodo Subscribe nel metodo OnModelItemChanged. Il frammento di codice seguente illustra come sottoscrivere un servizio.

protected override void OnModelItemChanged(object newItem)  
{  
    if (!subscribed)  
    {  
        this.Context.Services.Subscribe<IMyService>(  
            servInstance =>  
            {  
                listBox1.ItemsSource = servInstance.GetValues(this.ModelItem.Properties["DisplayName"].ComputedValue.ToString());  
            }  
            );  
        subscribed = true;
    }  
}  

Condivisione dei dati tramite la raccolta Items

L'utilizzo dell'insieme Items è simile all'utilizzo dell'insieme Services, ad eccezione del fatto che SetValue viene usato invece di Publish. Questa raccolta è più appropriata per la condivisione di dati semplici tra i designer e l'host, piuttosto che per funzionalità complesse.

Elementi e servizi host di EditingContext

.NET Framework offre numerosi elementi e servizi predefiniti a cui si accede tramite il contesto di modifica.

Elementi:

Servizi: