2016-10-31 3 views
0

Mein Problem:mvvm Licht UWP-Index von listItem Wenn Anstecknadel ListItem gedrückt

ich ein Listview bekam, die eine ItemTemplate hat; enthält ein DataTemplate mit einigen AppBarButtons drin. Jetzt, wenn der Benutzer einen der Buttons in der ListView drückt, wird das ListItem, das die Schaltfläche enthält, nicht hervorgehoben. Dieses Problem führt auch zu dem Problem, dass ich nicht weiß, wie der Index des Listenelements, das die Schaltfläche enthält, die der Benutzer geklickt hat, erhalten.

ListItem:

One ListItem

Der Code in Mainpage.xaml:

 <ListView.ItemTemplate> 
         <DataTemplate> 
          <StackPanel Orientation="Vertical">         
           <StackPanel Orientation="Horizontal"> 
              <!-- Simplified, Left out other AppBarButtons --> 
              <AppBarButton Foreground="White" VerticalAlignment="Center" 
               Label="Navigate" Icon="Map" > 
               <interactivity:Interaction.Behaviors> 
                <core:EventTriggerBehavior EventName="Tapped"> 
                 <core:InvokeCommandAction Command="{Binding Main.OpenMapCommand, Mode=OneWay, Source={StaticResource Locator}}"></core:InvokeCommandAction> 
                </core:EventTriggerBehavior> 
               </interactivity:Interaction.Behaviors> 
              </AppBarButton>          
           </StackPanel> 
          </StackPanel> 
         </DataTemplate> 
     </ListView.ItemTemplate> 

Der Befehl:

public RelayCommand OpenMapCommand 
    { 
     get 
     { 
      return _openMapCommand 
         ?? (_openPaneCommand = new RelayCommand(
          () => 
          { 
           Debug.WriteLine("Opening map"); 
           // Center on New York City 
           var uriNewYork = new Uri(@"bingmaps:?cp=40.726966~-74.006076"); 

           // Launch the Windows Maps app 
           var launcherOptions = new Windows.System.LauncherOptions(); 
           launcherOptions.TargetApplicationPackageFamilyName = "Microsoft.WindowsMaps_8wekyb3d8bbwe"; 
           var success = Windows.System.Launcher.LaunchUriAsync(uriNewYork, launcherOptions); 
          })); 
        } 
    } 

Whatan Antwort auf diese Frage geben muss:

  • Wie den Index des ListItem erhalten, die die AppBarButton ist enthalten, die in der relaycommand verwendet gedrückt wurde wird (die ListItem bewusst werden wird nicht ausgewählt, wenn der Benutzer die AppBarButton drängt)

Antwort

1

Die Datacontext im ItemTemplate das Einzelteil, das Sie als Befehlsparameter übergeben wollen, so sollten Sie in der Lage sein, nur um es zu binden CommandParameter:

<core:InvokeCommandAction Command="{Binding Main.OpenMapCommand, Source={StaticResource Locator}}" CommandParameter="{Binding}"/> 
_openPaneCommand = new RelayCommand(item => 
{ 
    .... 
}); 
0

ein gängiges Szenario der Tag-Eigenschaft auf der Schaltfläche verwendet, auf einen Wert von ListItem gebunden und nebenbei, dass als Befehl Parametern

weitere Stacko Antwort für Details UWP buttons inside Listview items

Verwandte Themen