programing

버튼 클릭 이벤트에 매개 변수 추가

elseif 2023. 4. 14. 21:17

버튼 클릭 이벤트에 매개 변수 추가

다음과 같은 wpf 버튼이 있습니다.

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

그리고 나는 합격하고 싶다.{Binding Code}button1_click 핸들러에 파라미터로 전달됩니다.
이거 어떻게 해야 되지?

면책사항: WPF의 새로운 기능

심플한 솔루션:

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

핸들러로,sender에 반대하다.Button에 액세스 합니다.Tag속성:

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

보다 우아한 해결책은 WPF의 명령어 패턴을 사용하는 것입니다.버튼이 실행하는 기능에 대해 명령어를 만들고, 명령어를 버튼에 바인드하는 것입니다.Command속성과 바인드CommandParameter고객의 가치를 높입니다.

저는 '태그'를 별로 안 좋아해서

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

그런 다음 Attributes를 통해 액세스합니다.

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

여기에는 두 가지 방법이 있습니다.

Data Context를 캐스트

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

또는 일반 상태 속성인 Tag 속성을 사용합니다.

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

그리고나서

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

Xaml 및 Data Context 사용

<?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>

또한 MainPage Code Bheing에서는 이 코드 예는 페이지 유형을 인수로 사용하여 다른 페이지로 이동하기 위해 "MyPageTypeHere"와 참조 페이지를 여기서 작성해야 합니다.

그런 다음 이면 코드를 구현합니다.

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; }
    }
}

또한 앱 클래스에서 탐색하려면 MainPage에 NavigationPage 인스턴스가 필요합니다(이 예에서는).

public App ()
{
    InitializeComponent();

    MainPage = new NavigationPage(new MainPage());
}

xamarin 폼용이지만 WPF 프로젝트용도 비슷합니다.

명령어는 WPF 및 Xamarin 용으로 변경할 수 있습니다.https://stackoverflow.com/a/47887715/8210755

언급URL : https://stackoverflow.com/questions/2006507/add-parameter-to-button-click-event