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 "