ListViewItem IsSelected Binding - 适用于WPF,但不适用于WinRT

Dav*_*mek 9 c# xaml windows-runtime winrt-xaml

我正在尝试将ListViewItem的IsSelected属性绑定到ViewModel中的属性.它在WPF中工作正常,但在Windows RT中,IsSelected属性永远不会被设置.

public class Item : INotifyPropertyChanged
{
    private readonly string name;
    private bool isSelected;
    public event PropertyChangedEventHandler PropertyChanged;

    public bool IsSelected
    {
        get { return isSelected; }
        set { isSelected = value; RaisePropertyChanged("IsSelected"); }
    }

    public string Name { get { return name; } }

    public Item(string name)
    {
        this.name = name;
    }

    protected void RaisePropertyChanged(string propertyName)
    {
        var handler = PropertyChanged;
        if (handler != null)
            handler.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}

public class ViewModel
{
    private readonly ObservableCollection<Item> items = new ObservableCollection<Item>(Enumerable.Range(0, 10).Select(p => new Item(p.ToString())));
    public ObservableCollection<Item> Items { get { return items; } }
}

public sealed partial class MainPage : Page
{
    public MainPage()
    {
        this.InitializeComponent();
        DataContext = new ViewModel();
    }
}
Run Code Online (Sandbox Code Playgroud)

XAML:

<StackPanel Orientation="Horizontal">
    <ListView ItemsSource="{Binding Path=Items}" SelectionMode="Multiple">
        <ListView.ItemContainerStyle>
            <Style TargetType="ListViewItem">
                <Setter Property="IsSelected" Value="{Binding Path=IsSelected, Mode=TwoWay}"/>
            </Style>
        </ListView.ItemContainerStyle>
    </ListView>
    <ListView.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Path=Name}"/>
         </DataTemplate>
     </ListView.ItemTemplate>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

我可以单击屏幕上的项目,但IsSelected属性不会传播到ViewModel.有什么想法吗?

Fil*_*kun 3

从 Windows 8.0 开始,WinRT 根本不支持 setter 中的绑定。Bing 寻求解决方法。