2016-07-25 71 views
1

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

我在上述方法中使用的邏輯,不是爲我做任何意義,因爲它允許我同時點擊兩個按鈕。要一次選擇一個按鈕,需要進行哪些更改?

回答

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 ); 
     } 
相關問題