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