Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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 :
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:
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:
AssemblyContextControlItem: gestisce l'elenco di assembly locali di riferimento che verranno usati all'interno del flusso di lavoro per i controlli , ad esempio l'editor di espressioni.
ReadOnlyState: Indica se il designer è in modalità sola lettura.
Selection: definisce la raccolta di oggetti attualmente selezionati.
WorkflowFileItem: fornisce informazioni sul file su cui si basa la sessione di modifica corrente.
Servizi:
AttachedPropertiesService: consente l'aggiunta di proprietà all'istanza corrente tramite AddProperty.
DesignerView: consente l'accesso alle proprietà dell'area di disegno della finestra di progettazione.
IActivityToolboxService: consente di aggiornare il contenuto della casella degli strumenti.
ICommandService: Utilizzato per integrare i comandi del designer (ad esempio, menu di scelta rapida) con implementazioni del servizio personalizzate.
IDesignerDebugView: fornisce funzionalità per il debugger di progettazione.
IExpressionEditorService: consente l'accesso alla finestra di dialogo Editor espressioni.
IIntegratedHelpService: fornisce al progettista funzionalità di aiuto integrate.
IValidationErrorService: consente l'accesso agli errori di convalida tramite ShowValidationErrors.
IWorkflowDesignerStorageService: fornisce un servizio interno per archiviare e recuperare i dati. Questo servizio viene usato internamente da .NET Framework e non è destinato all'uso esterno.
IXamlLoadErrorService: consente l'accesso alla raccolta di errori di caricamento XAML tramite ShowXamlLoadErrors.
ModelService: utilizzato dalla finestra di progettazione per interagire con il modello del flusso di lavoro da modificare.
ModelTreeManager: fornisce l'accesso alla radice dell'albero degli elementi del modello tramite Root.
UndoEngine: fornisce funzionalità di annullamento e rollforward.
ViewService: Effettua la mappatura degli elementi visivi agli elementi del modello sottostanti.
ViewStateService: archivia gli stati di visualizzazione per gli elementi del modello.
VirtualizedContainerService: usato per personalizzare il comportamento dell'interfaccia utente del contenitore virtuale.
WindowHelperService: usato per registrare e annullare la registrazione dei delegati per le notifiche degli eventi. Consente inoltre di impostare un proprietario della finestra.