2010-01-25 16 views
5

Necesito crear una aplicación CAD de escritorio que esencialmente debe tener una buena GUI moderna. Estoy pensando en crear una aplicación WPF para poder tener una interfaz de usuario completa. ¿Podría alguien sugerirme un marco de GUI para aplicaciones de escritorio bien diseñado en WPF, por favor? Encontré una buena GUI en este video http://channel9.msdn.com/posts/Psychlist1972/Pete-at-PDC09-WPF-3d-Awesomeness-with-Tor-and-Robby/ pero no estoy seguro de los controles que usaron en su aplicación. ¿Alguien tiene una idea de qué controles usaron allí?creando una buena GUI en WPF

¿Hay algún control de cuadrícula de propiedad en WPF? Intenté usar la grilla en Windows Forms. Personalizar esta grilla para satisfacer mis requisitos parece ser difícil. Muestra todas las propiedades del objeto directamente desde la clase base hasta la más derivada.

Respuesta

5

Con WPF, mucho es posible. Encontrará una amplia variedad de estilos para diversas aplicaciones debido a que, a diferencia de Windows Forms, WPF se puede modelar y diseñar de forma muy parecida a HTML. Los diseñadores reales pueden traer fácilmente una apariencia que es muy difícil de lograr en Windows Forms. Naturalmente, dado que es tan flexible, el aspecto de las aplicaciones con mucho estilo variará mucho de una aplicación a otra.

Dicho esto, hay algunos controles de terceros muy buenos. Todos los sospechosos habituales tienen bibliotecas de control para WPF: Telerik, Infragistics, ComponentOne, Actipro, Devxpress por nombrar solo algunas. Específicamente, Actipro's Property Grid es muy agradable. También hay un open source one que no he evaluado, por lo que no puedo hablar. WPF también puede ser "temático" aplicando estilos precompilados a los controles. Hay ejemplos de temas que se encuentran aquí: http://wpfthemes.codeplex.com/.

Finalmente, las fortalezas de WPF no se realizan completamente hasta que aprende a separar la vista que se dibuja y administra por WPF y la abstracción lógica de la vista, llamada modelo de vista. Josh Smith tiene un excelente artículo sobre este patrón, conocido como Model-View-ViewModel, aquí: http://msdn.microsoft.com/en-us/magazine/dd419663.aspx.

4

Creo que Microsoft no tuvo sentido en incluir un control PropertyGrid en WPF porque es muy trivial crear uno propio, y si creaban el control sería más difícil de diseñar.

para crear su propia PropertyGrid, sólo tiene que utilizar un <ListBox> con un <ItemsTemplate> que tiene un <DockPanel> contiene un <TextBlock> acoplado a la izquierda del nombre de propiedad y un <ContentPresenter> para el editor de valores, a continuación, active la agrupación en la propiedad Category.

El único código que necesita para escribir es el código que se refleja en el objeto y crea la lista de propiedades.

Aquí está una idea aproximada de lo que se debería utilizar:

DataContext = 
    from pi in object.GetType().GetProperties() 
    select new PropertyGridRow 
    { 
    Name = pi.Name, 

    Category = (
     from attrib in pi.GetCustomAttributes(false).OfType<CategoryAttribute>() 
     select attrib.Category 
    ).FirstOrDefault() ?? "None", 

    Description = (
     from attrib in pi.GetCustomAttributes(false).OfType<DescriptionAttribute>() 
     select attrib.Description 
    ).FirstOrDefault(), 

    Editor = CreateEditor(pi), 

    Object = object, 
    }; 

El método CreateEditor sería simplemente construir un editor apropiado para la propiedad con una unión al valor real de la propiedad.

En el XAML, el <ListBox.ItemTemplate> sería algo como esto:

<DataTemplate> 
    <DockPanel> 
    <TextBlock Text="{Binding PropertyName}" Width="200" /> 
    <ContentPresenter DataContext="{Binding Object}" Content="{Binding Editor}" /> 
    </DockPanel> 
</DataTemplate> 

te dejaré llenar el resto de los detalles.

Cuestiones relacionadas