2016-07-01 3 views
0

このコードで使用しているToggleボタンに何らかの並べ替えのリスナーを追加したいとします。複数のトグルボタン(リストビュー項目ごとに1つ)があるので、リスナーはそれがどの行に関連しているのかを指定する必要があります。私は本当にxamlでこれを行う良い方法を見つけることができません。誰かがここでおそらく助けることができる?私はリストをx:Nameで参照し、コードにアクセスして型キャストでトグルに到達しようとした後、ボタンにリスナーを追加します。それはかなりトリッキーです。どのようにこれを解決するためのアドバイス? Btw:名前はちょうどa、b、c、dで、私の顧客に関する詳細を隠すだけです。Xamarin.FormsのListviewでSwitchコントロールイベントを処理する

<?xml version="1.0" encoding="UTF-8"?> 
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:me="clr-namespace:simpletest;assemby=simpletest" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="simpletest.WeekView"> 
    <ContentPage.Content> 
     <StackLayout Spacing="10" Padding="8,10"> 
      <StackLayout Orientation="Horizontal"> 
       <Label Text="{Binding a}" FontSize="Large" FontAttributes="Bold" /> 
       <Label Text="{Binding b}" FontSize="Large" FontAttributes="Bold" /> 
      </StackLayout> 
      <me:HideableListView ItemsSource="{Binding c}" SeparatorVisibility="Default"> 
       <ListView.ItemTemplate> 
        <DataTemplate> 
         <ViewCell> 
          <Grid> 
           <Grid.RowDefinitions> 
            <RowDefinition Height="*" /> 
           </Grid.RowDefinitions> 
           <Grid.ColumnDefinitions> 
            <ColumnDefinition Width="*" /> 
            <ColumnDefinition Width="*" /> 
           </Grid.ColumnDefinitions> 
           <StackLayout Grid.Row="0" Grid.Column="0"> 
            <Label Text="{Binding d}" FontSize="Small" HorizontalOptions="Center" /> 
            <Label Text="{Binding e}" FontSize="Small" HorizontalOptions="Center" /> 
           </StackLayout> 
           <Switch IsToggled="{Binding f}" Toggled="{Binding g}" HorizontalOptions="Center" Grid.Row="0" Grid.Column="1" /> 
          </Grid> 
         </ViewCell> 
        </DataTemplate> 
       </ListView.ItemTemplate> 
      </me:HideableListView> 
     </StackLayout> 
    </ContentPage.Content> 
</ContentPage> 

答えて

0

public class ExtendedSwitch: Switch 
    { 
     public object MyItem { get; set; } 
    } 

拡張スイッチをMyItemのような余分な財産でSwitchコントロールを拡張し、

<ExtendedSwitch IsToggled="{Binding f}" 
MyItem={Binding e} Toggled="{Binding OnItemToggled}" /> 

のようなあなたの源とバインドToggledEvent

public void OnItemToggled(object sender, ToggledEventArgs e) 
     { 
      var toggledSwitch = (ExtendedSwitch)sender; 
      var item = toggledSwitch.MyItem; 
     }