[英]Is the “sender” in Button_Click(object sender… really the sender?
[英]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.