none
Migración de Silverlight a WPF RRS feed

  • Pregunta

  • Buen día, estoy entrando al proceso de migrar una aplicación originalmente desarrollada para Silverlight a WPF, y pues es muy diferente la forma en la que se declaran los accesos a la BD en un view con sus DomainDataSource y sus métodos de consulta, en el DomainService del proyecto Web, con parámetros para bindear un control, a como se haría en WPF usando MVVM... ¿será que prácticamente voy a tener que volver a hacer gran parte del proyecto?... ¿alguna sugerencia para que sea más transparente?...

    En el XAML del view:

    <riaControls:DomainDataSource x:Name="mtto_CategoriaEquipoDomainDataSource" AutoLoad="True" 
                        LoadedData="DomainDataSource_LoadedData"
                        QueryName="GetMtto_CategoriaEquipoFiltradosQuery" 
                        d:DesignData="{d:DesignInstance Web:mtto_CategoriaEquipo, CreateList=true}">
        <riaControls:DomainDataSource.QueryParameters>
            <riaControls:Parameter ParameterName="idEmp" Value="{Binding IDEMP}"/>
            <riaControls:Parameter ParameterName="rolEmp" Value="{Binding ROLEMP}"/>
        </riaControls:DomainDataSource.QueryParameters>
        <riaControls:DomainDataSource.DomainContext>
            <Web:MTTODomainContext/>
        </riaControls:DomainDataSource.DomainContext>
    </riaControls:DomainDataSource>

    <!-- Desde aquí para cargar el ComboBox de Categoria de Equipo -->
    <ComboBox x:Name="cbmtto_CategoriaEquipo" HorizontalAlignment="Center" Height="23" VerticalAlignment="Center" Width="159" Margin="10"
        DisplayMemberPath="Descripcion"  
        SelectedValuePath="ID"
        ItemsSource="{Binding Data, ElementName=mtto_CategoriaEquipoDomainDataSource}"
        IsEnabled="{Binding ElementName=dgProgramaMTTO, Path=ItemsSource, Converter={StaticResource IsEnabledNotConverter}}"
        SelectionChanged="cbmtto_CategoriaEquipo_SelectionChanged">
        <ComboBox.ItemsPanel>
            <ItemsPanelTemplate>
                <VirtualizingStackPanel/>
            </ItemsPanelTemplate>
        </ComboBox.ItemsPanel>
    </ComboBox>

    En el DomainService.cs en el proyecto Web:

    public IQueryable<mtto_CategoriaEquipo> GetMtto_CategoriaEquipoFiltrados(int idEmp, string rolEmp)
    {
        // Si el usuario es Administrador o Sistemas, muestra todas las categorías
        if (rolEmp == "ADMIN" || rolEmp == "SIST")
            return this.ObjectContext.mtto_CategoriaEquipo; // 21042016 El Estatus se usará para indicar si es un Taller Interno o Externo //.Where(c => c.Estatus == true);
        // Si no, solo las Categorias a las que pertenece
        else
        {
            var query =
                    (from categoria in this.ObjectContext.mtto_CategoriaEquipo.AsEnumerable()
                        join plantilla in this.ObjectContext.mtto_CategoriaEquipoEmpleado.AsEnumerable()
                        on categoria.ID equals plantilla.IDCategoriaEquipo
                        where plantilla.IDEmp.Equals(idEmp)
                        select categoria).Distinct();
    
            return query.AsQueryable();
        }
    }

    Saludos y gracias


    cyndyrdz


    viernes, 25 de febrero de 2022 16:36