2016-07-25 14 views
1

Ich arbeite an Xamarin.Forms und ich habe zwei Schaltflächen in meiner ListView und sie werden als Optionsfeld behandelt. Bei Klickereignis ändere ich die Bildeigenschaft der Schaltfläche, so dass sie als Optionsfeld fungiert. Aber in meinem Fall muss ich einen Knopf auf einmal ausgewählt haben. Wenn der Benutzer auf einen Radioknopf klickt, sollte ein anderer Radioknopf automatisch zurückgesetzt werden, um jeweils nur einen Knopf auszuwählen. I-Code von Listview hier- teilen binWie Zugriff Absenderobjekt einer Schaltfläche in Klick Ereignis einer anderen Schaltfläche

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

auch Code-behind für Radio-Buttons klicken ist hier-

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

Die Logik I in obigen Verfahren verwendet wird, nicht für mich keinen Sinn macht, weil es erlaubt Ich klicke auf beide Tasten gleichzeitig. Welche Änderungen sind erforderlich, um eine Schaltfläche gleichzeitig auszuwählen?

Antwort

0

löste ich mein Problem von mir wie this-

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