SelectedItemsってDependencyPropertyじゃないっぽいのでバインド出来ないんですよね。ということで、ベタな方法ですがView → ViewModelの1方向でいいなら以下のような方法が使えます。
まず、ViewModelとListViewに表示するアイテムのクラスを作ります。
using System; using System.Collections.Generic; using System.Linq; using Windows.UI.Popups; namespace App66 { publicclass MainPageViewModel { public IEnumerable<Person> SelectedItems { get; set; } = Enumerable.Empty<Person>(); public async void Dump() { var message = $"{string.Join(", ", this.SelectedItems.Select(x => x.Name).ToArray())} selected."; var dlg = new MessageDialog(message); await dlg.ShowAsync(); } } publicclass Person { publicstring Name { get; set; } publicoverridestring ToString() { returnthis.Name; } } }
ViewModelのSelectedItemsに選択された項目を突っ込むようにします。 やり方は、ListViewのSelectionChangedで突っ込むだけ。
<Pagex:Class="App66.MainPage"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="using:App66"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:System="using:System"mc:Ignorable="d"><Page.DataContext><local:MainPageViewModel /></Page.DataContext><Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"><Grid.RowDefinitions><RowDefinition Height="Auto" /><RowDefinition /></Grid.RowDefinitions><Button Content="Dump"HorizontalAlignment="Stretch"Click="{x:Bind ViewModel.Dump}" /><ListView x:Name="ListView"Grid.Row="1"SelectionMode="Multiple"SelectionChanged="ListView_SelectionChanged"><local:Person Name="Tanaka" /><local:Person Name="Kimura" /><local:Person Name="Ohta" /><local:Person Name="Homuhomu" /></ListView></Grid></Page>
using System.Linq; using Windows.UI.Xaml.Controls; // 空白ページのアイテム テンプレートについては、http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409 を参照してくださいnamespace App66 { /// <summary>/// それ自体で使用できる空白ページまたはフレーム内に移動できる空白ページ。/// </summary>publicsealedpartialclass MainPage : Page { public MainPageViewModel ViewModel => this.DataContext as MainPageViewModel; public MainPage() { this.InitializeComponent(); } privatevoid ListView_SelectionChanged(object sender, SelectionChangedEventArgs e) { this.ViewModel.SelectedItems = this.ListView.SelectedItems.Cast<Person>(); } } }
多用するならビヘイビア化してもいいかもですね。