none
Cómo agregar un objeto de un ResourceDictionary a la colección de otro RRS feed

  • Pregunta

  • Buenas a todos.  Vieran que me surgió esta inquietud: Tengo Models y tengo ViewModels.  Para asistir en el diseño de la ventana, quiero crear en App.xaml unos modelos que necesitan ser usados en 2 lugares:  Como valor de una propiedad de otro modelo y como elemento en una colección que es una propiedad de un ViewModel.

    Específicamente:

    //Modelos:
    public class A : Entity
    {
        ...
    }
    
    public class B : Entity
    {
        public A Propiedad { get; set; } //Bueno, con implementación de INotifyPropertyChanged.
    }
    
    //Luego el ViewModel:
    public class MainVM : BaseVM
    {
        public ObservableCollection<A> TodosLosA { get; private set; }
        public ObservableCollection<B> TodosLosB { get; private set; }
    
        public MainVM()
        {
            TodosLosA = new ObservableCollection<A>();
            TodosLosB = new ObservableCollection<B>();
        }
    }

    Para tener datos de ejemplo mientras diseño, quería hacer algo así en App.xaml:

        <Application.Resources>
            <ResourceDictionary>
                <models:A x:Key="Item1" ID="1" Name="Item 1"></models:A>
                <models:A x:Key="Item2" ID="2" Name="Item 2"></models:A>
                <viewModels:MainVM x:Key="DesignMainViewModel">
                    <viewModels:MainVM.TodosLosA>
                        <!--  Aquí quiero agregar los objetos tipo Models.A definidos arriba con keys Item1 e Item2. -->
                    </viewModels:MainVM.TodosLosA>
                    <viewModels:MainVM.TodosLosB>
                        <!-- Este es el otro lugar donde se usan. -->
                        <models:B Propiedad="{StaticResource Item1}"/>
                        <models:B Propiedad="{StaticResource Item2}"/>
                    </viewModels:MainVM.TodosLosB>
                </viewModels:MainVM>
            </ResourceDictionary>
        </Application.Resources>
    

    Finalmente usaría en la ventana XAML DataContext="{StaticResource DesignMainViewModel}" para que en la ventana de diseño pueda yo ver los valores que definí.  El problema es que no recuerdo ni encuentro una sintaxis válida para llenar la colección TodosLosA a partir de los objetos tipo A que se definen en el ResourceDictionary.  ¿Es esto posible de alguna manera?


    Jose R. MCP
    Code Samples

    jueves, 22 de enero de 2015 7:33

Todas las respuestas

  • José, ¿Por qué quieres mezclar estilos con datos? La idea de MVVM es la separación del Modelo y la vista. ¿O estoy interpretando mal?

    Saludos.


    Christian Amado
    Software Engineer | MCPD: Windows Phone Developer | MCTS: Silverlight Developer
    Don't forget to mark the right answer and vote up if helps you.
    MCP Profile

    jueves, 22 de enero de 2015 14:58
  • ¿Estilos?  ¿Por qué estilos? No tengo ningún estilo ahí ni he hablado de estilos.  Jaja, ¿será que no me expliqué bien?

    Veamos:  Mi único objetivo es tener, en la misma ventana donde yo escribo XAML y donde tengo la vista gráfica de diseño de una ventana, datos de ejemplo.  O sea, quiero que mi diseñador de ventanas XAML, además de mostrarme cómo se van viendo los controles, quiero ver los controles con datos de ejemplo.  Ahí mismito, sin tener siquiera que correr la aplicación ni una vez.  Directo en el diseñador quiero ver el DataGrid cargado con un par de filas mientras modifico el XAML a mi gusto.

    ¿Se entiende mejor lo que quiero?


    Jose R. MCP
    Code Samples

    jueves, 22 de enero de 2015 15:03