繁体   English   中英

在另一个按钮的单击事件中如何访问一个按钮的发送者对象

[英]How access sender object of one button in click event of another button

我正在使用Xamarin.Forms,并且ListView中有两个按钮,它们被视为单选按钮。 在单击事件中,我正在更改按钮的图像属性,以便它可以用作单选按钮。 但就我而言,我需要一次选择一个按钮。 如果用户单击一个单选按钮,则另一个单选按钮应自动重置,以便一次只能选择一个按钮。 我在这里共享ListView的代码-

<ListView RowHeight="35"  SeparatorVisibility="None" BackgroundColor="{x:Static color:ColorResources.PageBackgroundColor}" HeightRequest="230" x:Name="listof_ingredients_and_lifestyleDiets">
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <ViewCell>
                           <StackLayout Spacing="60" HorizontalOptions="FillAndExpand" Orientation="Horizontal">                           
                                <Label  Text="dipak" FontSize="14"  TextColor="{x:Static color:ColorResources.TextColor}" HorizontalOptions="CenterAndExpand" VerticalOptions="CenterAndExpand"/> 
                                <Button Image="radio_Check.png" Clicked="OnAllergenTapped"   HeightRequest="25" WidthRequest="25" HorizontalOptions="CenterAndExpand" VerticalOptions="CenterAndExpand"/>
                                <Button Image="radio_unCheck.png" Clicked="OnPreferenceTapped"   HeightRequest="25" WidthRequest="25" HorizontalOptions="CenterAndExpand" VerticalOptions="CenterAndExpand"/>
                                <Button Image="deleteBtn.png" Clicked="btnDeleteClicked" HeightRequest="50" WidthRequest="40" HorizontalOptions="EndAndExpand" VerticalOptions="CenterAndExpand"/>
                           </StackLayout>
                       </ViewCell>
                    </DataTemplate>
                </ListView.ItemTemplate>
       </ListView>

单选按钮后面的代码也位于此处-

public void OnAllergenTapped(object sender, EventArgs e)
{
    var s = sender as Button;
    if (flag_allergen == 1)
    {
        s.Image = "radio_uncheck.png";
        flag_allergen = 0;
        flag_preference = 1;
    }
    else
    {
        s.Image = "radio_Check.png";
        flag_allergen = 1;
        flag_preference = 0;
    }
}
public void OnPreferenceTapped(object sender, EventArgs e)
{
    var s = sender as Button;
    if (flag_allergen == 1)
    {
        s.Image = "radio_uncheck.png";
        flag_allergen = 0;
        flag_preference = 1;
    }
    else
    {
        s.Image = "radio_Check.png";
        flag_allergen = 1;
        flag_preference = 0;
    }
}    

我在上述方法中使用的逻辑对我来说没有任何意义,因为它允许我同时单击两个按钮。 一次选择一个按钮需要进行哪些更改?

我这样自己解决了问题-

Button btnPreference;
        public void OnAllergenTapped(object sender, EventArgs e)
        {
            var allergen = sender as Button;
            if(flag_allergen==1){
                allergen.Image="radio_uncheck.png";
                btnPreference = allergen.Parent.FindByName<Button> ("btnPreference");
                btnPreference.Image = "radio_Check.png";
                flag_allergen=0;
                flag_preference=1;
            }else{
                allergen.Image = "radio_Check.png";
                btnPreference.Image = "radio_uncheck.png";
                flag_allergen=1;
                flag_preference=0; 
            }
            Debug.WriteLine ("Allergen="+flag_allergen+"  Preference= "+flag_preference  );
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM