visual tutorial studio español c# .net wpf vb.net xaml

c# - tutorial - wpf xaml



WPF: cómo comenzar desde una ventana en un ensamblaje diferente (3)

Busqué en Google esto y todavía no puedo hacerlo funcionar

Tengo una aplicación WPF y quiero comenzar desde Main.xaml, que se encuentra en un ensamblaje diferente. Ambos conjuntos están en la misma ubicación.

¿Cómo puedo hacer esto? Saqué el StartupUri del XAML y probé con estas y algunas pequeñas variaciones:

protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); StartupUri = new Uri("/CompanyName.VisualStudio.UI;CompanyName/VisualStudio/UI/DatabaseManager/Main.xaml", UriKind.Relative); //StartupUri = new Uri(@"pack://application:,,,/ CompanyName.VisualStudio.UI;CompanyName/VisualStudio/UI/DatabaseManager/Main.xaml"); }

El nombre del ensamblado es "CompanyName.VisualStudio.UI" y el espacio de nombre es "CompanyName / VisualStudio / UI / DatabaseManager / Main.xaml"

¿Algunas ideas?


Una vieja pregunta, pero this también es útil:

void App_Startup(object sender, StartupEventArgs e) { MainWindow = new YourWindow(some, arguments); MainWindow.Show(); }

y yo app.xaml:

<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="SDKSample.App" Startup="App_Startup" />

y recuerda sobre ShutdownMode: si recuerdas abrir una nueva ventana antes de cerrar la última, deberías estar bien


Verificaría el URI de tu paquete. A continuación está el uri que probaría. Piense en ''componente'' como la carpeta raíz en su proyecto y donde coloque ''FolderName'' ponga el nombre apropiado de la carpeta o elimínelo si Main.xaml está en la raíz del proyecto.

StartupUri = new Uri(@"pack://application:,,,/CompanyName.VisualStudio.UI;component/FolderName/Main.xaml", UriKind.Absolute);


Este artículo brinda una solución limpia solo de XAML.

StartupUri="pack://application:,,,/assembly_name;component/path/file_name.xaml"

Dónde:

  • assembly_name es el nombre del ensamblado al que se hace referencia, sans extension
  • ruta es la subcarpeta en la que reside el componente; si el componente está en la raíz del proyecto, este elemento se omite
  • file_name es el nombre de archivo del componente

Ejemplos:

pack://application:,,,/UI;component/CalculatorView.xaml assembly - UI.dll path - none (file at project root) file_name - CalculatorView pack://application:,,,/MyApp.UI;component/Views/CalculatorView.xaml assembly - MyApp.UI.dll path - Views file_name - CalculatorView pack://application:,,,/UI;component/Views/External/CalculatorView.xaml assembly - UI.dll path - Views/External file_name - CalculatorView