Principales respuestas
Controladores Vistas y Modelos en una dll para un proyecto WPF

Pregunta
-
Buenos Días Ojala y puedan ayudarme con esto que quiero hacer Tengo una solución con dos proyectos Muestro imagen
Un proyecto LineUp es una dll y el proyecto WpfAppLineUp es un proyecto WPF. EL exe el proyecto de arranque es el WPF
dentro del WpfAppLineUp tiene el siguiente código XAML
<Window x:Class="WpfAppLineUp.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:WpfAppLineUp" mc:Ignorable="d" Title="MainWindow" Height="450" Width="800"> <Grid Name="GridContainer"> <Grid.RowDefinitions> <RowDefinition Name="RowSession" Height="100"></RowDefinition> <RowDefinition Name="RowModule"></RowDefinition> </Grid.RowDefinitions> <Rectangle Grid.Row="0" Fill="Red"/> <Button Grid.Row="0" Content="Button" HorizontalAlignment="Left" Margin="702,40,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click"/> </Grid> </Window>
Ahora que es lo que se busca
dentro del evento click del button esta este código
using LineUp.Controller; namespace WpfAppLineUp { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void Button_Click(object sender, RoutedEventArgs e) { ControllerLineUp controllerLineUp = new ControllerLineUp(); controllerLineUp.Show(); } } }
Como pueden ver hago referencia a la dll LineUp.Controller. Dentro del evento se crea la clase ControllerLineUp y se llama
Al metodo.Show
Ahora vamos a la clase ControllerLineUp
muestro el codigo
using System.Windows.Controls; using LineUp.Views; namespace LineUp.Controller { public class ControllerLineUp { public UserControl Show() { UserControl1 userControl1 = new UserControl1(); return userControl1; } } }
esta clase hace referencia a la clase Control1 que esta en views dentro de esta misma dll y este es el codigo xaml
<UserControl x:Class="LineUp.Views.UserControl1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:LineUp.Views" mc:Ignorable="d" d:DesignHeight="450" d:DesignWidth="800"> <Grid> <Label Content="Hola Mundio" HorizontalAlignment="Left" Margin="290,156,0,0" VerticalAlignment="Top" Height="107" Width="271" FontSize="40"/> </Grid> </UserControl>
y el codigo de la clase no tiene nada.
Que es lo que busco que executar el metodo Show ese control se ponga dentro de este rowDefinition
<RowDefinition Name="RowModule"></RowDefinition>
Espero a ver explicado bien y Ojala y puedan ayudarme
De antemano Muchas Gracias
Respuestas
-
el stackpanel lo debes ubicar dentro de MainWindows
sera donde ubiques el user control, pero recuerda ponerle un Name para poder accederlo desde codigo
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Marcado como respuesta niqel viernes, 22 de febrero de 2019 20:49
Todas las respuestas
-
hola
si lo quieres mostrar dentro de un contenedor debes asignarlo a este, el Show() que implementas actualente solo crea la instancoa del user control, pero no lo ubica en ningun contendor
quizas
private void Button_Click(object sender, RoutedEventArgs e) { ControllerLineUp controllerLineUp = new ControllerLineUp(); var uc = controllerLineUp.Show();
stackPanel1.Children.Add(uc); }
por supuesto define el StackPanel con el name en el RowDefinition donde quieres ubicarlo
aAunque aqui no estoy seguro si al estar en una dll separada lo tome directo osi debas definir algo en el xaml
How to add UserControl to a Panel on a WPF Window
como es el
xmlns:local="clr-namespace:My"
My seria el namespace de la libreria
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Propuesto como respuesta Pedro AlfaroModerator viernes, 22 de febrero de 2019 17:20
-
-
el stackpanel lo debes ubicar dentro de MainWindows
sera donde ubiques el user control, pero recuerda ponerle un Name para poder accederlo desde codigo
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Marcado como respuesta niqel viernes, 22 de febrero de 2019 20:49