Compartir a través de


Uso del contexto de edición "ModelItem"

El ModelItem contexto de edición es el objeto que usa la aplicación host para comunicarse con el diseñador. EditingContext expone dos métodos, Items y Services, que se pueden usar

La colección Items

La Items colección se usa para tener acceso a los datos que se comparten entre el host y el diseñador, o los datos que están disponibles para todos los diseñadores. Esta colección tiene las siguientes funcionalidades, a las que se accede a través de la ContextItemManager clase :

  1. GetValue

  2. Subscribe

  3. Unsubscribe

  4. SetValue

La colección Services

La Services colección se usa para tener acceso a los servicios que usa el diseñador para interactuar con el host o los servicios que usan todos los diseñadores. Esta colección tiene los siguientes métodos reseñables:

  1. Publish

  2. Subscribe

  3. Unsubscribe

  4. GetService

Asignar una actividad a un diseñador

Para especificar qué diseñador usa una actividad, se usa el atributo Designer.

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

Creación de un servicio

Para crear un servicio que actúa como un conducto de información entre el diseñador y el host, se debe crear una interfaz y una implementación. El método usa la Publish interfaz para definir los miembros del servicio y la implementación contiene la lógica del servicio. En el ejemplo de código siguiente, se crean una interfaz de servicio y una implementación.

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  
            } ;  
        }  
    }  

Publicación de un servicio

Para que un diseñador consuma un servicio, primero debe publicarlo el host mediante el Publish método .

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

Suscribirse a un servicio

El diseñador obtiene acceso al servicio mediante el método Subscribe en el método OnModelItemChanged. En el fragmento de código siguiente se muestra cómo suscribirse a un servicio.

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;
    }  
}  

Compartir datos utilizando la colección Items

El uso de la colección Items es similar al uso de la colección Services, excepto que SetValue se usa en lugar de Publicar. Esta colección es más adecuada para compartir datos simples entre los diseñadores y el host, en lugar de una funcionalidad compleja.

Servicios y elementos host de EditingContext

.NET Framework proporciona una serie de elementos y servicios integrados a los que se accede a través del contexto de edición.

Artículos:

  • AssemblyContextControlItem: administra la lista de ensamblados locales a los que se hace referencia que se usará dentro del flujo de trabajo para los controles (como el editor de expresiones).

  • ReadOnlyState: indica si el diseñador está en un estado de solo lectura.

  • Selection: define la colección de objetos que están seleccionados actualmente.

  • WorkflowCommandExtensionItem:

  • WorkflowFileItem: proporciona información sobre el archivo en el que se basa la sesión de edición actual.

Servicios: