manejo llamar eventos evento disparar crear botones boton activar c# wpf .net-3.5 button click

c# - llamar - Agregar parámetro al evento de clic de botón



llamar evento click c# (4)

Bueno, hay dos formas de hacer esto:

Emitir el DataContext

void button1_Click(object sender, RoutedEventArgs e) { var button = sender as Button; var code = ((Coupon)button.DataContext).Code; }

O use la propiedad Tag que es una propiedad de estado genérica

<Button Click="button1_Click" Height="23" Margin="0,0,5,0" Name="button1" Tag="{Binding Code}" />

entonces

void button1_Click(object sender, RoutedEventArgs e) { var button = sender as Button; var code = button.Tag; }

Tengo un botón wpf como este:

<Button Click="button1_Click" Height="23" Margin="0,0,5,0" Name="button1" Width="75">Initiate</Button>

Y quiero pasar {Binding Code} pasado como parámetro al controlador button1_click.
¿Cómo hago esto?

Descargo de responsabilidad: realmente nuevo para WPF


No soy demasiado fanático de ''Tag'' así que quizás

<Button Click="button1_Click" myParam="parameter1" Height="23" Margin="0,0,5,0" Name="button1" Width="75">Initiate</Button>

Luego accediendo a través de los Atributos.

void button1_Click(object sender, RoutedEventArgs e) { var button = sender as Button; var theValue = button.Attributes["myParam"].ToString() }


Solución simple:

<Button Tag="{Binding Code}" ...>

En su controlador, envíe el objeto sender a Button y acceda a la propiedad Tag :

var myValue = ((Button)sender).Tag;

Una solución más elegante sería usar el patrón Command de WPF : cree un comando para la funcionalidad que desea que el botón ejecute, vincule el comando a la propiedad Command del botón y vincule CommandParameter a su valor.


Usando Xaml y DataContext

<?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:DataAndCloudServices" x:Class="DataAndCloudServices.MainPage" > <StackLayout> <!-- Command Implemented In Code Behing --> <Button Text="Consuming Web Services Samples" Command="{Binding NavigateCommand}" CommandParameter="{x:Type local:YourPageTypeHere}" > </Button> </StackLayout> </ContentPage>

Y código de MainPage Behing, este ejemplo de código es para navegar a otra página utilizando el tipo de página como argumento, debe hacer "YourPageTypeHere" y la página de referencia aquí.

Luego implementa el código Detrás.

using System; using System.Windows.Input; using Xamarin.Forms; namespace DataAndCloudServices { public partial class MainPage : ContentPage { public MainPage() { InitializeComponent(); NavigateCommand = new Command<Type>( async (Type pageType) => { Page page = (Page)Activator.CreateInstance(pageType); await Navigation.PushAsync(page); }); this.BindingContext = this; } public ICommand NavigateCommand { private set; get; } } }

También en su clase de aplicación necesita una Instancia de NavigationPage en MainPage para navegar (para este ejemplo)

public App () { InitializeComponent(); MainPage = new NavigationPage(new MainPage()); }

Es para las formas de xamarin, pero es similar para los proyectos de WPF.

El comando se puede cambiar con WPF y Xamarin: " https://.com/a/47887715/8210755 "