我的问题:
我有一个ListView,它有一个ItemTemplate;包含一个DataTemplate,其中包含一些AppBarButtons
。
现在,当用户按下ListView中的一个按钮时,包含该按钮的ListItem不会突出显示。
这个问题也导致了我不知道如何获得的问题
listitem的索引,其中包含用户单击的按钮。
列表项:
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>
命令:
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);
}));
}
}
这个问题的答案需要提供:
答案 0 :(得分:1)
ItemTemplate中的DataContext将是您要作为命令参数传递的项目,因此您应该能够将其绑定到CommandParameter
:
<core:InvokeCommandAction Command="{Binding Main.OpenMapCommand, Source={StaticResource Locator}}" CommandParameter="{Binding}"/>
_openPaneCommand = new RelayCommand(item =>
{
....
});
答案 1 :(得分:0)
常见的情况是使用按钮上的Tag属性,绑定到ListItem的值并将其作为命令参数传递
有关详细信息,请参阅其他StackO答案UWP buttons inside Listview items