¿Cómo definir el comportamiento de un control en un archivo .CS separado (en WPF)? -- wpf campo con controls camp Relacionados El problema

How to define behavior of a control in a separate .cs file (in WPF)?


1
vote

problema

Español

Ató a mi código de muestra XAML y .CS para que pueda ver de qué se trata. Tengo una ventaja de al menos 10 botones (una parte para el elemento de medios, segundo para la lista de reproducción y el tercero para la aplicación. Además, hay métodos de ayuda que uso en todos estos métodos mencionados.

Se pone realmente feo que tiene solo un archivo .cs con docenas de métodos. No tengo idea de cómo separarlos y seguir manteniendo la comunicación entre los controles y los métodos.

Tengo ventana principal como esta en xaml

  private object recGetProperty(object currentNode, string[] selectors, int index) {     try {         Type nodeType = currentNode.GetType();         object nextNode = nodeType.GetProperty(selectors[index]);         if (index == (selectors.Length - 1)) {             return nextNode;         }         else {             return recGetProperty(nextNode, selectors, index + 1);         }     }     catch (Exception e) {         return null;     }            }  private object getProperty(object root, string[] selectors) {     return recGetProperty(root, selectors, 0); } 2  

y mainwindow.cs

  private object recGetProperty(object currentNode, string[] selectors, int index) {     try {         Type nodeType = currentNode.GetType();         object nextNode = nodeType.GetProperty(selectors[index]);         if (index == (selectors.Length - 1)) {             return nextNode;         }         else {             return recGetProperty(nextNode, selectors, index + 1);         }     }     catch (Exception e) {         return null;     }            }  private object getProperty(object root, string[] selectors) {     return recGetProperty(root, selectors, 0); } 3  
Original en ingles

I attached my XAML and .CS sample code so you can see what is it all about. I have MainWindow with at least 10 buttons (one part for media element, second for playlist, and third for application itself. Also, there are helper methods I use in all these mentioned methods.

It gets really ugly having only one .cs file with dozens of methods. I have no idea how to separate these and still keep communication between controls and methods.

I have Main Window like this in XAML

<Window x:Class="Modulated.MainWindow"     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"     Title="MainWindow" Height="194" Width="525"> <Grid>     <Button Content="Sort Asc" Height="23" HorizontalAlignment="Left" Margin="10,12,0,0" Name="button3" VerticalAlignment="Top" Width="75" Click="sort_asc" />     <Button Content="Sort Desc" Height="23" HorizontalAlignment="Left" Margin="12,42,0,0" Name="button4" VerticalAlignment="Top" Width="75" />     <ListBox Height="131" HorizontalAlignment="Left" Margin="99,12,0,0" Name="listBox1" VerticalAlignment="Top" Width="70" >         <ListBoxItem>1</ListBoxItem>         <ListBoxItem>2</ListBoxItem>         <ListBoxItem>3</ListBoxItem>     </ListBox>     <MediaElement Height="131" HorizontalAlignment="Left" Margin="187,12,0,0" Name="mediaElement1" VerticalAlignment="Top" Width="165" />     <Button Content="Play" Height="23" HorizontalAlignment="Left" Margin="372,12,0,0" Name="btnPlay" VerticalAlignment="Top" Width="75" Click="play" />     <Button Content="Stop" Height="23" HorizontalAlignment="Left" Margin="372,42,0,0" Name="btnStop" VerticalAlignment="Top" Width="75" Click="stop" />     <Button Content="Next" Height="23" HorizontalAlignment="Left" Margin="372,71,0,0" Name="btnNext" VerticalAlignment="Top" Width="75" Click="next" /> </Grid> 

and MainWindow.cs

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes;   namespace Modulated { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window {     public MainWindow()     {         InitializeComponent();     }      private void play(object sender, RoutedEventArgs e)     {         mediaElement1.Play();     }      private void stop(object sender, RoutedEventArgs e)     {         mediaElement1.Stop();     }      private void next(object sender, RoutedEventArgs e)     {}      private void sort_asc(object sender, RoutedEventArgs e)     {} } } 
     

Lista de respuestas

1
 
vote
vote
La mejor respuesta
 

Una buena manera de separar la lógica y la presentación es el patrón de diseño MVVM. Puedes encontrar un tutorial aquí: http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

 

A good way to separate logic and presentation is the MVVM design pattern. You can find a tutorial on it here: http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

 
 
   
   

Relacionados problema

3  C # Obtenga eventos de un control dentro de un control personalizado  ( C sharp get events of a control inside a custom control ) 
Tengo un cuadro de lista dentro de un control personalizado. Utilizo este control personalizado en un formulario. Me gustaría poder obtener el evento cambiado...

-1  Pregunta de SharePoint sobre UserControl en WebPart  ( Sharepoint question about usercontrol on webpart ) 
Añadido USERCONTROL WEBPART en el sitio y obtuve este error: Error CS0117: 'ASP._60B6AD6D_6998_4413_8d26_f07e4e897ce8_1417418301' no contiene una definición...

3  Cuando es el momento adecuado para decir: "¡Ahora necesito crear un control de usuario!"  ( When is the right time to say now i need to create a user control ) 
¿Cuándo consideras crear un control de usuario en .NET? ¿Tiene algún criterio básico para excluir su código de la página e introducir un nuevo control de usua...

11  ¿Cómo congelar el encabezado de GridView?  ( How to freeze gridview header ) 
Como en un título, ¿Alguien sabe cómo congelar el encabezado de GridView en ASP.NET? ...

0  Control de aplicaciones web Flex equivalente a mx.controls.html  ( Flex web application control equivalent to mx controls html ) 
AS FLEX WEB APLICACIONES NO TIENE EL CONTROL MX.CONTROLS.HTML (solo para aplicaciones aéreas), a cualquier persona conozca un control personalizado de FOSS qu...

1  Uso de imágenes de línea personalizadas en ASP.NET TreeView Control  ( Using customized line images in asp net treeview control ) 
Cuando uso mis imágenes de línea propia para personalizar el aspecto del control de TreeView, parece haber un problema de representación en la fila de la tabl...

3  Control de giro en Delphi [CERRADO]  ( Spin control in delphi ) 
cerrado. Esta pregunta no cumple con pautas de desbordamiento de pila . Actualmente no está aceptando respuestas. ...

0  ¿Cómo cambiar la identificación del control dentro del repetidor dinámicamente (C # ASP.NET)?  ( How to change the id of control within the repeater dynamically c asp net ) 
Tengo linkbutton dentro del repetidor. El ID del repetidor es " lnkbtn ". Tengo un DataTable que contiene una columna llamada " Questionnumber ". El " Que...

3  Opiniones sobre controles comerciales de MVC  ( Opinions on commercial mvc controls ) 
Estamos interesados ​​en las opiniones de las comunidades sobre los controles comerciales de MVC, es decir, Telerik, SyncFusion. Que es rápido, fácil de usar,...

0  Publicar código fuente al blog - Control con Barra de desplazamiento y mantener el formato  ( Posting source code to blog control with scrollbar keep formatting ) 
Estamos buscando un control que podamos usar en nuestros blogs de WordPress que mantendrán nuestro formato de código fuente y proporcionar barras de desplazam...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos