visual tutorial studio español ejemplos wpf visual-studio xaml code-behind

tutorial - wpf vs winforms



Cómo ''fusionar'' un archivo XAML y su código subyacente con Visual Studio (4)

Esto no es una respuesta a tu pregunta inicial, sino a esto:

En ese caso, explique cómo agregar un controlador de eventos a una plantilla sin usar código subyacente

Puedes hacer esto con un ViewModel y una clase ICommand.

Primero necesita crear su clase ViewModel, hacer esto público y no estático con un constructor sin parámetros.

Luego cree otra clase que implemente la interfaz ICommand:

public class Command : ICommand { public void Execute(object parameter) { //this is what happens when you respond to the event } public bool CanExecute(object parameter) { return true; } public event EventHandler CanExecuteChanged; }

Agregue una instancia de su clase de comando a su clase de ViewModel, haga esto privado y expóngalo a través de una propiedad de solo lectura:

public class ViewModel { private readonly ICommand _command = new Command(); public ICommand Command { get { return _command; } } }

Agregue su ViewModel como un recurso estático, en su archivo App.xaml:

<Application.Resources> <wpfApplication1:ViewModel x:Key="ViewModel"/> </Application.Resources>

Establezca su DataContext de su archivo XAML en su ViewModel:

<Window DataContext="{StaticResource ViewModel}">

Ahora responde a tu evento enlazando a la clase de Comando:

<Button Click="{Binding Command}"></Button>

Boom, sin código detrás. Espero que esto ayude.

Tengo una plantilla definida en un archivo XAML llamado ''MyTemplate.xaml''. Esta plantilla utiliza un archivo de código subyacente denominado ''MyTemplate.cs''.

Mytemplate.xaml :

<ResourceDictionary x:Class="Project.Templates.MyTemplate"> <DataTemplate ... /> </ResourceDictionary>

MyTemplate.cs :

namespace Project.Templates { public partial class MyTemplate : ResourceDictionary { ... } }

En el Explorador de soluciones de Visual Studio, estos dos archivos están uno al lado del otro. Lo que me gustaría hacer es juntar estos dos archivos, al igual que con un Control y su código subyacente.

Lo que tengo:

Lo que me gustaría tener:

¿Cuál es la mejor manera de hacer eso? Gracias.



Otra forma es:

  • Añadir / Crear un nuevo archivo / elemento XAML
  • Copie y pegue el contenido antiguo .xaml y xaml.cs en los nuevos archivos equivalentes
  • borrar los archivos separados
  • renombrar el nuevo archivo

Si realmente siente la necesidad de combinar partes de código con XAML en WPF, podría usar las Attached Properties . Puede almacenar el XAML en App.Resources y cargarlo y aplicarlo desde una Attached Property . Me doy cuenta de que esto no le dará un archivo para el XAML y el código que hay detrás, pero funciona bien.

Puede registrar un controlador PropertyChangedCallback en su Attached Property y en este controlador, puede aplicar la plantilla:

ControlTemplate controlTemplate = (ControlTemplate)Application.Current. FindResource("TextBoxTemplate"); if (textBox.Template != controlTemplate) textBox.Template = controlTemplate;