Skocz do zawartości

Dostęp do ui sfery nexo w aplikacji używającej windows forms.


Zobacz rozwiązanie Rozwiązane przez Katarzyna Rozmarynowska,

Polecane posty

private Uchwyt ConnectToSfera(DatabaseCredentials DatabaseCredentials, NexoConfig NexoConfig) {
	DanePolaczenia danePolaczenia = DanePolaczenia.Jawne(DatabaseCredentials.Ip, DatabaseCredentials.Database, DatabaseCredentials.IsWindowsLogin, DatabaseCredentials.Login, DatabaseCredentials.Password);
	MenedzerPolaczen mp = new MenedzerPolaczen();
	mp.DostepDoUI = true;
	Uchwyt sfera = mp.Polacz(danePolaczenia, ProductId.Subiekt);
	if(!sfera.ZalogujOperatora(NexoConfig.Login, NexoConfig.Password)) {
		throw new ArgumentException("Incorrect nexo login credentials");
	}
	return sfera;
}
Uchwyt sfera = mp.Polacz(danePolaczenia, ProductId.Subiekt);

W linii powyżej program daje wyjątek który jest poniżej.

System.InvalidOperationException: 'Brak bieżącej aplikacji'
This exception was originally thrown at this call stack:
    InsERT.Moria.Sfera.UI.Configuration.SferaUIModule.ConfigureApplication(InsERT.Mox.UIFramework.Telemetry.IUchwytSferyInformator, InsERT.Mox.Runtime.IInjectionContainer, Microsoft.Practices.Unity.IUnityContainer, InsERT.Mox.Launcher.LaunchMessage)
    InsERT.Moria.Sfera.MenedzerPolaczen.BjA=(InsERT.Moria.Sfera.MenedzerPolaczen.TjA=, CzA=.KDA=, InsERT.Mox.Runtime.Unity.UnityAdapter, Microsoft.Practices.Unity.IUnityContainer, InsERT.Mox.Launcher.LaunchMessage, bool, InsERT.Mox.Product.IProductContext)
    InsERT.Moria.Sfera.MenedzerPolaczen.Polacz(InsERT.Moria.Sfera.DanePolaczenia, InsERT.Mox.Product.ProductId, InsERT.Moria.Sfera.IPostepLadowaniaSfery, System.Collections.Generic.IEnumerable<InsERT.Mox.Product.ProductId>)
    InsERT.Moria.Sfera.MenedzerPolaczen.Polacz(InsERT.Moria.Sfera.DanePolaczenia, InsERT.Mox.Product.ProductId, InsERT.Mox.Product.ProductId?, InsERT.Mox.Product.ProductId?, InsERT.Mox.Product.ProductId?, InsERT.Mox.Product.ProductId?, InsERT.Mox.Product.ProductId?)

Czy jest jakiś sposób na używanie ui nexo w aplikacji używającej windows forms?

Link to postu
  • Rozwiązanie

Tak, można używać UI nexo w aplikacja Windows Forms. Wymaga to jednak utworzenia instancji typu AplikacjaWpf, który dziedziczy po WPFowym Application. Nie trzeba nic z tą instancją robić, wystarczy jedynie, żeby zainstniała przed utworzeniem Uchwytu. Poniżej zamieszczam mały przykład, w którym w aplikacji Windows Forms otwierane jest okno konkretnego towaru:

public partial class Form1 : Form
{
	private Uchwyt _sfera;

	public Form1()
	{
		InitializeComponent();
	}

	private void buttonPolacz_Click(object sender, EventArgs e)
	{
		// utworzenie instancji aplikacji WPFowej
		var app = new AplikacjaWpf();
		_sfera = Uchwyty.NowyZDostepemDoUi();
	}

	private void buttonPokaz_Click(object sender, EventArgs e)
	{
		if (_sfera != null)
		{
			var asortymenty = _sfera.Asortymenty();
			var asortyment = asortymenty.Znajdz("PESO20");
			if (asortyment != null)
			{
				var okno = _sfera.PodajObiektTypu<IAsortymentOkno>();
				okno.Pokaz(asortyment);
			}
			else
			{
				_ = MessageBox.Show("Nie udało się odnaleźć towaru o symbolu \"PESO20\"");
			}
		}
	}		
}

 

  • Lubię to 1
Link to postu
×
×
  • Dodaj nową pozycję...