none
Controladores Vistas y Modelos en una dll para un proyecto WPF RRS feed

  • 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

    viernes, 22 de febrero de 2019 15:14

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
    viernes, 22 de febrero de 2019 18:50

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

    viernes, 22 de febrero de 2019 16:45
  • pero el stackPanel1.Children.Add(uc); a quien pertenece a que dll por que la referencia es del WPFapplineUp es quien conoce a

    la libreria Line Up

    si el stackPanel esta en la WPF no puedo verla

    viernes, 22 de febrero de 2019 18:00
  • 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
    viernes, 22 de febrero de 2019 18:50